Python Language Números aleatorios reproducibles: semilla y estado


Ejemplo

Establecer una semilla específica creará una serie fija de números aleatorios:

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

Restablecer la semilla creará la misma secuencia "aleatoria" de nuevo:

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

Dado que la semilla está fija, estos resultados son siempre 9 y 4 . Si no es necesario tener números específicos solo que los valores serán los mismos, también puede usar getstate y setstate para recuperar un estado anterior:

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

Para pseudoaleatorizar de nuevo la secuencia, se seed con None :

random.seed(None)

O llame al método seed sin argumentos:

random.seed()