2017-09-27 139 views
1

对于Python 3,我可以在互联网上找到许多不同的地方,说明random模块的默认种子是基于系统时间的。随机:什么是默认种子?

Python 2.7的情况也是这样吗?我想是的,因为如果我启动两个不同的Python进程,并且在两者中都执行import random; random.random(),那么这两个不同的进程会返回不同的结果。

如果确实使用系统时间,那么使用的实际种子是什么? (例如,“自午夜以来的秒数”或“自UNIX时代以来的微秒数”,或者......) 如果不是,用于播种PRNG的是什么?

回答

1

这是关于如何为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等于os.urandom。有关urandom的更多信息,请检查此page