对于 Python 3,我可以在互联网上找到许多不同的地方,说明random模块的默认种子基于系统时间。
Python 2.7 也是这种情况吗?我想是的,因为如果我启动两个不同的 Python 进程,并且在这import random; random.random()两个进程中我都这样做,那么这两个不同的进程会返回不同的结果。
如果它确实使用系统时间,那么实际使用的种子是什么?(例如“自午夜以来的秒数”或“自 UNIX 纪元以来的微秒数”,或者……)如果不是,那么用什么来播种 PRNG?
这是关于如何为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
Run Code Online (Sandbox Code Playgroud)
urandom等于os.urandom。有关更多信息urandom,请查看此页面。