Me interesa entender si es posible predecir Python 3 random.random()
cuando se siembran con un alto valor de entropía de un sistema físico, como un lanzamiento de dados.
En otras palabras, ¿es random.random()
una buena función que toma "entropía" y la reduce a un valor delimitado determinista impredecible o no?
A mi entender, pasa todas las pruebas de aleatoriedad que encontré.
No me interesan las buenas prácticas y es mejor utilizar /dev/urandom
, secretos u otras fuentes de buenos valores aleatorios. Eso es un hecho conocido.
Cosas a considerar:
- El generador aleatorio se siembra con un alto valor de entropía y solo se usa una vez para generar un valor único desde el estado inicial antes de que se vuelva a sembrar.
- El generador se siembra con una nueva semilla para cada número.
- La semilla tiene una alta entropía, alrededor de 256 bits o una entropía o más.
La razón por la que quiero hacer esto es que me permita usar random.choise
, que es una forma extremadamente conveniente de transformar una semilla en una opción. Aquí hay una implementación aproximada de la idea:
-
random.random
se siembra con una semilla de alta entropía. -
Se usa
random.choice
. -
random.random
se siembra con una nueva semilla de alta entropía. -
Se usa
random.choice
. - ... una y otra vez.
¿La lista de opciones resultante es predecible?