Sono interessato a capire se è possibile prevedere Python 3% dirandom.random()
quando seminato con un alto valore di entropia da un sistema fisico, come un lancio di dadi.
In altre parole, random.random()
è una buona funzione che prende "entropia" e la riduce a un valore limite deterministico imprevedibile o no?
Da quanto ho capito, passa tutti i test di casualità che ho trovato.
Non mi interessa la buona pratica e che è meglio usare /dev/urandom
, segreti o altre fonti di buoni valori casuali. Questo è un fatto noto.
Cose da considerare:
- Il generatore casuale è seminato con un valore di entropia elevato e usato una sola volta per generare un singolo valore dallo stato iniziale prima di essere seminato di nuovo.
- Il generatore è seminato con nuovi semi per ogni numero.
- Il seme ha un'alta entropia, qualcosa attorno a 256 bit o entropia o più.
La ragione per cui voglio farlo è che mi permette di usare random.choise
che è un modo estremamente conveniente per trasformare un seme in una scelta. Ecco una implementazione approssimativa dell'idea:
-
random.random
è seminato con un seme ad alta entropia. -
random.choice
è usato. -
random.random
è seminato con un nuovo seme ad alta entropia. -
random.choice
è usato. - ... ancora e ancora.
L'elenco delle scelte risultante è prevedibile?