Re: [delphi-br] Dúvida com Sorteio (Random)

2009-12-08 Por tôpico Silvio Clecio
Ricardo César Cardoso escreveu:
 Eu ia esperar pra comprovar amanhã, quando ia testar no Delphi, mas acho 
 que usando assim como passado, o resultado sempre será o mesmo. Se não 
 me engano, Randomize é somente um inicializador do gerador de números 
 randômicos, por isso deve ser chamado apenas uma vez, como bem disse o João.

Eu fiquei sabendo disso agora (chamar só na inicialização).

Fiz um teste para embaralhar uns números, e queria que numa contagem de 
0 a 500 ele embaralhasse até acabar as combinações possíveis, ex:

Certo:
1 - 27
2 - 63
3 - 7
4 - 500
5 - 339

Errado:
1 - 27
2 - 500
3 - 7
4 - 500 -- repetiu
5 - 339

Queria que, quando ele tivesse esgotado todas as combinações possíveis 
(de 0 a 500), acionasse um LED pro cara resetar a contagem; solução: 
salvar em uma variável os números que já foram exibidos, e não deixar o 
laço soltar outro número igual. (posso estar enganado, mas pelo menos 
nos testes que fiz, se não fosse esse macete os números iam se repetir 
muitas vezes).

Quem tiver uma solução mais simples, por gentileza, um CTRL+V aqui na 
lista e outro aqui - [http://pastebin.com/] :)

 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!

--
Silvio Clecio
--
Blog estilo mural - silvioclecio.blogspot.com
Twitter - twitter.com/silvioprog
--
programmer ObjectPascal - silvioprog.blogspot.com
--
A consciência é o melhor livro de moral que temos; e é, certamente, o 
que mais devemos consultar. Blaise Pascal.



Re: [delphi-br] Dúvida com Sorteio (Random)

2009-12-07 Por tôpico Ricardo César Cardoso
É 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]



Re: [delphi-br] Dúvida com Sorteio (Random)

2009-12-07 Por tôpico Diego Garcia
Não tenho certeza, mas tente usar o *Randomize *antes de usar o *Random *
*Diego Garcia*

Twitter: http://www.twitter.com/drgarcia1986
Blog:http://www.atocadopanda.com


2009/12/7 valdirdill vald...@infolivre.com.br



 Olá,

 Tenho a função abaixo para gerar um código que utilizo no sistema.
 Pela lógica, se chamarmos a função assim:
 GeraCodigoAlfaNumericoAleatorio(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 GeraCodigoAlfaNumericoAleatorio(VTamanho : Integer) : string;
 Var
 I : Integer;
 VMatriz : String;
 begin
 VMatriz := '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'

 result := '';
 for I := 1 to VTamanho do
 result := result + Copy(VMatriz,random(Length(VMatriz)),1);
 end;

  



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





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
delphi-br-unsubscr...@yahoogrupos.com.br

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




Re: [delphi-br] Dúvida com Sorteio (Random)

2009-12-07 Por tôpico JNP - NetSite
procedure Gera: String;
var
   c: Char;
   s: String;
begin

   Randomize;
   s:='';
   while true do begin
  c:=char(random(91));
  if c in ['0'..'9'] then
 s:=s + c
  else if c in ['A'..'Z'] then
 s:=s + c;

  if length(s) = 6 then
 break;
   end;
end;


Re: [delphi-br] Dúvida com Sorteio (Random)

2009-12-07 Por tôpico Leandro
esse nao eh um metodo bom para se gerar um randomico.. pois a função random
na verdade nao eh randomica rsrs dificil de entender ne!..

faça o teste colocando:

result := '';
for I := 1 to VTamanho do
Begin
 Randomize;
 result := result + Copy(VMatriz,random(Length(VMatriz)),1);
End;

end;



2009/12/7 valdirdill vald...@infolivre.com.br



 Olá,

 Tenho a função abaixo para gerar um código que utilizo no sistema.
 Pela lógica, se chamarmos a função assim:
 GeraCodigoAlfaNumericoAleatorio(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 GeraCodigoAlfaNumericoAleatorio(VTamanho : Integer) : string;
 Var
 I : Integer;
 VMatriz : String;
 begin
 VMatriz := '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'

 result := '';
 for I := 1 to VTamanho do
 result := result + Copy(VMatriz,random(Length(VMatriz)),1);
 end;

  




-- 
Leandro, MuTukA


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





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
delphi-br-unsubscr...@yahoogrupos.com.br

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




Re: [delphi-br] Dúvida com Sorteio (Random)

2009-12-07 Por tôpico Joao Morais
2009/12/7 Leandro mutu...@yahoo.com.br:
 esse nao eh um metodo bom para se gerar um randomico.. pois a função random
 na verdade nao eh randomica rsrs dificil de entender ne!..

 faça o teste colocando:

 result := '';
 for I := 1 to VTamanho do
 Begin
     Randomize;
     result := result + Copy(VMatriz,random(Length(VMatriz)),1);
 End;

Use o randomize uma única vez, fora do laço. Melhor ainda se for
executado uma única vez na inicialização do programa.

Joao Morais


Re: [delphi-br] Dúvida com Sorteio (Random)

2009-12-07 Por tôpico Ricardo César Cardoso
Eu ia esperar pra comprovar amanhã, quando ia testar no Delphi, mas acho que 
usando assim como passado, o resultado sempre será o mesmo. Se não me engano, 
Randomize é somente um inicializador do gerador de números randômicos, por isso 
deve ser chamado apenas uma vez, como bem disse o João.

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, Joao Morais jcmorai...@gmail.com escreveu:

De: Joao Morais jcmorai...@gmail.com
Assunto: Re: [delphi-br] Dúvida com Sorteio (Random)
Para: delphi-br@yahoogrupos.com.br
Data: Segunda-feira, 7 de Dezembro de 2009, 22:26







 



  



  
  
  2009/12/7 Leandro mutu...@yahoo. com.br:

 esse nao eh um metodo bom para se gerar um randomico.. pois a função random

 na verdade nao eh randomica rsrs dificil de entender ne!..



 faça o teste colocando:



 result := '';

 for I := 1 to VTamanho do

 Begin

     Randomize;

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

 End;



Use o randomize uma única vez, fora do laço. Melhor ainda se for

executado uma única vez na inicialização do programa.



Joao Morais




 





 



  






  

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]