É uma boa pergunta, mas não imagino uma resposta convincente... Quanto a se 
repetir em máquinas diferentes do usuário, o que posso dizer que me lembro é 
que a primeira execução de Random é gerada usando a data e a hora do sistema, 
portanto parte do mesmo valor independente do equipamento. A partir daí as 
coisas se randomizam mesmo.

Acho que para limitar essa repetição, seria interessante (porém mais custoso) 
refazer o sorteio em caso de repetição do código, fazendo o paralelo com o 
sorteio de um bingo, onde as "pedras" já retiradas não voltam para o recipiente.

Espero ter contribuido.

Atte,
Ricardo.

1) Evite escrever suas mensagens usando somente LETRAS MAIÚSCULAS.

2) Revise o texto de sua mensagem. Uma mensagem bem escrita é melhor 
compreendida.

3) Vamos ajudar o Grupo e o Yahoo! Apague o conteúdo irrelevante!

--- Em seg, 7/12/09, valdirdill <vald...@infolivre.com.br> escreveu:

De: valdirdill <vald...@infolivre.com.br>
Assunto: [delphi-br] Dúvida com Sorteio (Random)
Para: delphi-br@yahoogrupos.com.br
Data: Segunda-feira, 7 de Dezembro de 2009, 12:16







 



  


    
      
      
      Olá,



Tenho a função abaixo para gerar um código que utilizo no sistema. 

Pela lógica, se chamarmos a função assim: "GeraCodigoAlfaNume ricoAleatorio( 
10);" o retorno deveria ser sempre diferente. Poderia até repetir, mas a chance 
disso acontecer, seria tipo uma em um bilhão?



O problema: em 610 códigos gerados, o código 6HGX564TQP já se repetiu 23 vezes. 
Para isso ocorrer, o resutaldo do "random(Length( VMatriz)) " teria ser 
6-18-17-34-5- 6-4-30-27- 26. Qual a chance desse sorteio ocorrer exatamente 
igual e nessa mesma ordem? Pois, em 610 tentativas, ocorreu 23 vezes. A 
execução é feita sempre em máquinas diferentes (do usuário), mas mesmo assim, 
isso não poderia ocorrer, poderia?



Qualquer dica ajuda. Obrigado



function GeraCodigoAlfaNumer icoAleatorio( VTamanho : Integer) : string;

Var

 I : Integer;

 VMatriz : String;

begin

 VMatriz := '1234567890ABCDEFGH IJKLMNOPQRSTUVWX YZ'



result := '';

 for I := 1 to VTamanho do

  result := result + Copy(VMatriz, random(Length( VMatriz)) ,1);

end;





    
     

    
    


 



  






      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

Responder a