[Prévia cron] [Próxima Cron] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto] [Índice de autor]

números aleatórios



>     Acho que é só por causa do que está dito nos parênteses: o segundo
> método pega o dígito decimal do final do número randômico, enquanto que o
> primeiro pega logo do começo. Suponho que a geração "randômica", que é
> sempre baseada, em última análise, em valores lidos diretamente do clock,
> seja mais "precisa" nos bits do ordem mais alta. Porém nunca vi ninguém
usar
> a segunda forma, anyway! Nada muito sério, de todo modo, todo mundo usa a
> primeira forma, mesmo sabendo que nao existe randomicidade de verdade.

Mas qual é a differença se ele usa os primeiros ou os últimos dígitos do
número?
Como é que isto esta tão errado que o cara diz para ''Never" usar módulo!?

O curioso é que eu fiz exatamente o que ele mandou não fazer!
Para criar o número aleatório inteiro escrevi:

int min, max;
rand() % (max - min + 1) + min;

E para a semente usei:

#include <sys/timeb.h>
#include <limits.h>
struct timeb now;
ftime(&now);
srand((1000 * now.millitm + now.time) % UINT_MAX);

Ao meu ver, isto não é muito ruim, pois duvido que tenha que dar mais de
1000 sementes novas em menos de 1 segundo  :-)

Usei UINT_MAX, pois o protótipo de srand() é void srand(unsigned int seed);
O módulo acho que é pura frescura, pois para o Epoch estourar unsigned
integer faltam uns 105 anos...
Mas quem sabe, talvez o pessoal ainda programe em C em 105 anos...

[]'s
Vito