generatori di numeri casuali generano un nuovo valore 'casuale' in base al numero precedente generato. Il seme è il valore iniziale per questo.
Seeding con lo stesso valore (come 0 nel codice di esempio), in pratica indica al generatore di numeri casuali di iniziare ogni volta con lo stesso numero. Avere lo stesso numero casuale generato ogni volta significa che il tuo codice diventa riavviabile. Esempio: le simulazioni utilizzano questo per riavviare la simulazione con i parametri modificati, ma con lo stesso 'set di dati'.
Un altro esempio:
voglio inviare un messaggio me motivazionale ogni giorno. A volte i messaggi sono confusi. Essere in grado di rieseguire la sceneggiatura, produrre lo stesso messaggio più e più volte durante un giorno, rende semplice la correzione. In codice Perl questo significa:
# By initialising the random generator with the day number since
# the epoch, we get the same quote during one day.
srand(time()/(24*3600));
my $i = int(rand(@messages));
Se si vuole produrre diversi numeri ogni volta, si dovrà impostare questo seme di qualcosa di casuale. Le opzioni sono molte, come il tempo, il PID, il ritardo tra due sequenze di tasti da parte dell'utente, un valore derivato dall'interfaccia ethernet, ecc. O più probabilmente una combinazione del precedente come time*PID
.
Spero che questo chiarisca l'idea alla base del concetto di un valore di seme numero casuale.
seme tuo generatore di numeri casuali – vladr
che è una caratteristica, non un bug :) –
E solo una nota a margine: Un seme di '0' è meglio evitato nella maggior parte dei PRNG. Alcune implementazioni aggirano il problema ma non dovresti fare affidamento su questo. – Joey