[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
- Subject: números aleatórios
- From: "Vito A. Di Leo G." <vidileo@attglobal.net>
- Date: Wed, 22 Nov 2000 13:52:11 -0200
> 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