Originariamente inviato da suomi_viking_86
ciao, vorrei generare dei numeri casuali con il C, ho provato la funzione rand() da stdlib.h ma se chiedo di stampare 10 numeri casuali la sequenza è sempre la stessa,
devi usare la funzione srand()
codice:
void srand(unsigned int seed);
seed è il seme della generazione dei numeri pseudocasuali
puoi usare come seme il valore restituito da time()
codice:
srand(time(NULL));
inoltre non c'è la solita limitazione del risultato compreso tra 0 e 1, il che mi complica il problema
Se ho ben capito vuoi un numero casuale reale tra 0 e 1
quindi siccome la funzione rand() restituisce un numero casuale intero tra 0 e RAND_MAX.
devi fare una cosa del genere
codice:
/* genera un numero reale tra [0.0, 1.0[ 1.0 escluso */
double r = rand() / (RAND_MAX+1.0);
codice:
/* genera un numero reale tra [0.0, 1.0] 1.0 incluso */
double r = rand() / (double)RAND_MAX;
se ti servono i float in singola precisione sostituisci double con float.