PDA

View Full Version : [C] srand


David_jcd
12-11-2008, 12:51
Ciao!
Ho bisogno di generare dei numeri casuali. Potrei usare rand ed
srand((unsigned int)time((time_t *)NULL));
ma mi piacerebbe capire cosa significano tutti i parametri
(unsigned int)
time()
(time_t *)NULL
che si trovano nella funzione srand.
Ho fatto delle ricerche ma sembra che tutti usino srand come una black box sapendo cosa fa ma non come funziona...
Sapete aiutarmi? grazie!

variabilepippo
12-11-2008, 13:20
Ho fatto delle ricerche ma sembra che tutti usino srand come una black box sapendo cosa fa ma non come funziona...

L'invocazione della funzione srand inizializza il seme del generatore di numeri pseudo-casuali mediante il valore passato per parametro. Se tralasci i vari cast necessari per conformarsi al prototipo della srand vedrai che il seme viene inizializzato al valore restituito da time (http://www.cplusplus.com/reference/clibrary/ctime/time.html), dunque nessuna "black box", basta leggere la documentazione. :)

Se poi sei curioso su come viene impiegato il seme per generare la sequenza pseudo-casuale allora devi spulciare i sorgenti (o la documentazione) del tuo compilatore e/o della relativa libreria standard.

Se usi un compilatore basato sulla GNU C Library puoi studiare il codice contenuto nei file rand.c, random.c e random_r.c.