对于Python 3,我可以在互联网上的许多不同地方找到默认种子基于系统时间的random
模块。
那么Python 2.7也是这样吗?我认为是的,因为如果我启动两个不同的Python进程,在两个进程中都执行import random; random.random()
,则会返回不同的结果。
如果使用系统时间作为种子,则实际种子是什么?(例如,“自午夜以来的秒数”或“自UNIX纪元以来的微秒数”或...)如果不是,那么用于种子PRNG的是什么?
对于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
urandom
等同于 os.urandom
。关于 urandom
的更多信息,请查看此页面。
_urandom
的代码实现呢? - Ozichukwu