[C] Numeri Random

Return89
Ciao a tutti,
sto cercando di creare una funzione che generi automaticamente dei numeri.

Il codice che utilizzo è il seguente:
srand(time(NULL));
numero = rand()%10000;


Tuttavia non funziona: una volta visualizzato il primo numero, gli altri sono semplicemente dati dalla somma di quel numero con un valore (dipendente dal tempo che passa) e quindi se voglio immediatamente 10 numeri, essi saranno inevitabilmente identici. Se tuttavia attendo qualche secondo il risultato è comunque disastroso: avrò una sequenza costituita da numeri che hanno una differenza con il successivo identica.


Come posso risolvere?

(Utilizzo Visual Studio.)

Grazie in anticipo :)

Risposte
apatriarca
rand non è un buon generatore di numeri casuali, ma la tua descrizione mi sembra esagerata e credo che tu stia facendo qualcosa di sbagliato. Mostra tutto il codice.

Return89
Ho trovato l' "errore": in pratica avevo inserito srand(time(null)) dentro il ciclo e quindi tutte le volte il valore stampato era praticamente lo stesso.
Ho comunque notato che il primo valore random segue un "andamento temporale" (più passano i secondi e più sarà maggiore) mentre dal secondo in poi sembra che un qualcosa di casuale ci sia.

Oltre rand quale sarebbe un buon metodo per la generazione di numeri casuali?

Grazie per l'aiuto!

vict85
time generalmente fornisce il numero di secondi che sono passati da un particolare punto nel tempo. Quindi fornisce lo stesso valore per ogni chiamata sufficientemente vicina. Devi portarlo fuori oppure assicurarti che venga chiamato una sola volta. Per esempio con una variabile static. Ma dipende un po'dal tuo codice.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.