[C++] Maneira correta de utilizar srand()  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
Diogo Cabral
Thread.start()
[Avatar]

Membro desde: 22/06/2006 12:05:33
Mensagens: 44
Localização: Maceió - AL
Offline

Olá,

Sempre utilizei a função srand utilizando time(0) ou time (NULL) como parâmetro. Quando precisei criar mais de um processo no mesmo segundo, os números gerados pela função rand() são os mesmo quando comparados com os gerados pelos outros processos. Até aí tudo bem, o time vai ter o mesmo valor para todos os processos.

Qual a maneira adequada de inicializar srand()?

Encontrei o código abaixo na internet: (Infelizmente não achei muito legal)


diogocabral.com
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Se você quer ser realmente chato em termos de gerar números aleatórios, pode usar o OpenSSL, que faz as seguintes coisas:

- Chama o gerador de números aleatórios do sistema operacional, caso disponível (/dev/random no Linux, CryptGenRandom no Windows);
- Usa um monte de outras coisas (como no Windows a listagem dos PIDs e outras coisas mais estranhas).

OpenSSL RAND

O problema de você usar o tempo, é óbvio, é que mesmo tv.tv_usec não é muito legal (na verdade, muitos sistemas operacionais não conseguem garantir precisão melhor que 10 milissegundos). Mas pode até ser tolerável, para efeitos de simulação; não é tolerável para efeitos criptográficos.
[WWW]
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team