Python Language Numeri casuali riproducibili: seme e stato

Esempio

L'impostazione di un seme specifico creerà una serie di numeri casuali fissi:

random.seed(5)                 # Create a fixed state         
print(random.randrange(0, 10))  # Get a random integer between 0 and 9
# Out: 9
print(random.randrange(0, 10))
# Out: 4

La reimpostazione del seme creerà nuovamente la stessa sequenza "casuale":

random.seed(5)                 # Reset the random module to the same fixed state.
print(random.randrange(0, 10))
# Out: 9
print(random.randrange(0, 10))
# Out: 4

Poiché il seme è fisso, questi risultati sono sempre 9 e 4 . Se non è necessario avere numeri specifici, solo che i valori saranno gli stessi, è possibile utilizzare semplicemente getstate e setstate per ripristinare uno stato precedente:

save_state = random.getstate()  # Get the current state
print(random.randrange(0, 10))
# Out: 5
print(random.randrange(0, 10))
# Out: 8

random.setstate(save_state)     # Reset to saved state
print(random.randrange(0, 10))
# Out: 5
print(random.randrange(0, 10))
# Out: 8

Per pseudo-randomizzare nuovamente la sequenza, fai il seed con None :

random.seed(None)

Oppure chiama il metodo seed senza argomenti:

random.seed()