[C] Numeri Random
Ciao a tutti,
sto cercando di creare una funzione che generi automaticamente dei numeri.
Il codice che utilizzo è il seguente:
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
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
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.
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!
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!
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.