In pratica la funzione rand (); consente di estrarre un numero pseudo casuale compreso tra 0 e RAND_MAX.
Ti faccio un esempio:
codice:#include <stdio.h> int main ( void ) { int i , n; for ( i = 0 ; i < 2 ; i++ ) { n = rand ( ); printf( " %d \n " , n ); } return ( 0 ); }Come vedi però la sequenza di numeri ottenuta è sempre la stessa, quindi occorre utilizzare la funzione srand ( unsigned int ); per dare luogo a numeri casuali sempre diversi.codice:[michele@linux c]$ gcc -o r rand.c [michele@linux c]$ ./r 1804289383 846930886 [michele@linux c]$ ./r 1804289383 846930886
Infatti se provi a mettere:
vedi come ad ogni numero, cambia sempre la generazione dei numeri casuali.codice:srand ( 13U ); srand ( 16U ); /* ecc.. */
Ad ogni numero corrisponde quindi una frequenza di numeri casuali sempre uguale per lo stesso numero.
Quindi per favere un valore imprevedibile devi utilizzare il clock di macchina:
quindi la funzione time (); che restituisce l'ora.
Che quindi casta il valore restituito dalla time (); in un unsigned int e ti permette di avere sempre numeri diversi tra loro.codice:srand ( ( unsigned int ) time ( NULL ) );

Rispondi quotando