2017-09-27 1 views
1

Pour Python 3, je peux trouver de nombreux endroits différents sur Internet indiquant que la graine par défaut pour le module random est basée sur l'heure du système.random: quelle est la graine par défaut?

Est-ce aussi le cas pour Python 2.7? J'imagine que c'est le cas, car si je démarre deux processus Python différents, et dans les deux, je fais import random; random.random() alors les deux processus différents retournent des résultats différents. Si elle utilise l'heure du système, quelle est la semence utilisée? (Par exemple, "nombre de secondes écoulées depuis minuit" ou "nombre de microsecondes depuis l'époque UNIX", ou ...) Sinon, à quoi sert la graine du PRNG?

Répondre

1

Ceci est le code source sur la façon de générer une graine par défaut pour un objet Random.

try: 
    # Seed with enough bytes to span the 19937 bit 
    # state space for the Mersenne Twister 
    a = long(_hexlify(_urandom(2500)), 16) 
except NotImplementedError: 
    import time 
    a = long(time.time() * 256) # use fractional seconds 

urandom égal à os.urandom. Et pour plus d'informations sur urandom, s'il vous plaît vérifier ce page.