Sto cercando di riprodurre una sequenza casuale da Python random.random()
su un sistema diverso con una versione diversa di python3 installata.Perché il seeding del generatore casuale non è stabile tra le versioni di Python?
Questo dovrebbe essere facile come il documentation says:
La maggior parte degli algoritmi del modulo casuale e le funzioni di semina sono soggette a modifiche attraverso versioni di Python, ma due aspetti sono garantiti non cambiare:
- Se viene aggiunto un nuovo metodo di semina, verrà offerta una seminatrice compatibile con le versioni precedenti .
- Il metodo random() del generatore continuerà a produce la stessa sequenza quando la seminatrice compatibile riceve lo stesso seme .
quindi mi aspetto il seguente codice per stampare sempre gli stessi 10 numeri, non importa la specifica versione python3:
import sys
print(sys.version)
from random import seed, random
seed(str(1))
for i in range(10):
print(random())
Tuttavia, test su due macchine diverse:
3.2.3 (default, May 3 2012, 15:51:42)
[GCC 4.6.3]
0.4782479962566343
0.044242767098090496
0.11703586901195051
0.8566892547933538
0.2926790185279551
0.0067328440779825804
0.0013279506360178717
0.22167546902173108
0.9864945747444945
0.5157002525757287
e
3.1.2 (release31-maint, Dec 9 2011, 20:59:40)
[GCC 4.4.5]
0.0698436845523
0.27772471476
0.833036057868
0.35569897036
0.36366158783
0.722487971761
0.963133581734
0.263723867191
0.451002768569
0.0998765577881
Dai diversi risultati.
Perché è questo? E c'è un modo per fare questo lavoro
per quello che vale, in esecuzione lo snippet di codice in 2.7 produce una serie completamente diversa di numeri di uno dei due che hai postato. –
Si afferma * verrà offerta una seminatrice compatibile con le versioni precedenti * non che il metodo esistente sia compatibile con le versioni precedenti. – borrible