Che cos’è un seme in termini di generazione di un numero casuale?

Che cos’è un seme in termini di generazione di un numero casuale?

Ho bisogno di generare da centinaia a migliaia di numeri casuali, ho letto molto sull’utilizzo di un “seme”. Cos’è un seme? Un seme da dove partono i numeri casuali? Ad esempio, se imposto che il mio seme sia 5, genererà numeri da 5 a qualunque sia il mio limite? Quindi non mi darà mai 3 per esempio.

Sto usando C ++, quindi se fornisci qualche esempio sarebbe bello se fosse in C ++.

Grazie!

Quello che normalmente è chiamato sequenza di numeri casuali in realtà è una sequenza numerica “pseudo-casuale” perché i valori sono calcolati utilizzando un algoritmo deterministico e la probabilità non ha alcun ruolo reale.

Il “seme” è un punto di partenza per la sequenza e la garanzia è che se inizi dallo stesso seme otterrai la stessa sequenza di numeri. Questo è molto utile ad esempio per il debug (quando si cerca un errore in un programma è necessario essere in grado di riprodurre il problema e studiarlo, un programma non deterministico sarebbe molto più difficile eseguire il debug perché ogni corsa sarebbe diversa) .

Se hai bisogno solo di una sequenza casuale di numeri e non hai bisogno di riprodurli, usa semplicemente il tempo corrente come seme … per esempio con:

srand(time(NULL)); 

Quindi, diciamo così:

se tu e il tuo amico impostate il seme uguale allo stesso numero, allora voi e il vostro amico otterrete gli stessi numeri casuali. Quindi, se tutti noi scriviamo questo semplice programma:

 #include using namespace std; void main () { srand(0); for (int i=0; i<3; i++){ int x = rand()%11; //range between 0 and 10 cout< 

Tutti otterremo gli stessi numeri casuali che sono (5, 8, 8).

E se vuoi ottenere sempre un numero diverso, puoi usare srand (time ())