PDA

Visualizza la versione completa : [C] numeri random


yagorossi
03-04-2004, 12:44
ho un problema a generare numeri random. Ho una funzione che tutte le volte che chiamata deve usare due numeri casuali interi che genera in un certo range. Il punto e' che se all'interno di questa funzione metto srand((unsigned int)(time(NULL))); come generatore del seme, poiche' il programma e' molto veloce a girare e chiama la funzione in un ciclo for in pratica time(NULL) assume sempre lo stesso valore, e i numeri casuali sono sempre gli stessi. Invece ho bisogno che questi siano tutti diversi appunto in modo casuale (con equiprob). Come faccio?

Lardoman
03-04-2004, 13:07
Non so se questo il problema (dovrei vedere il codice) per se lo srand lo metti dentro ad un ciclo for normale che di a sempre gli stessi numeri.

Quindi mettilo prima una sola volta ;)

kNemo
03-04-2004, 15:46
srand (time(NULL));
for (i=0; i < 10; i++)
printf ("%u\n", rand ()%10);


A me' da' sempre numeri diversi...

Lardoman
03-04-2004, 16:11
Originariamente inviato da kNemo


srand (time(NULL));
for (i=0; i < 10; i++)
printf ("%u\n", rand ()%10);


A me' da' sempre numeri diversi...

Quello che ho detto anch'io. Il fatto che invece se metti lo srand (time(NULL)) dentro il ciclo for




for (=0;i<10;i++)
{
srand(time(NULL)) ;
printf ("%u\n",rand()%10) ;
}



come ha fatto lui i 9 numeri generati sono uguali...

kNemo
03-04-2004, 17:37
questo perche' (secondo me') il ciclo for e' velocissimo e quindi si riferisce sempre agli stessi secondi...

Se proprio vuoi prova a fare cosi...


#include <dos.h>
...
for (i=0; i<10; i++) {
srand(time(NULL)) ;
printf ("%u \n",rand()%10);
sleep(10);
}
...


E' Ovviop pero' che cosi' risulta piu' lento...

Loading