给定初始参数,我需要生成一个受控的伪随机数序列。为此,我使用了标准的python随机生成器,并以此参数作为种子。我想确保在整个系统(操作系统和Python版本)中生成相同的序列。
总结:python是否确保其 实现 和 版本 之间的伪随机数生成器具有可重复性/可移植性?
不,不是。random模块的文档中没有这样的承诺。
random
该文档包含的内容是这样的:
在版本2.3中进行了更改:MersenneTwister取代了Wichmann-Hill作为默认生成器
因此,在Python 2.3之前使用了其他RNG。
到目前为止,我一直在使用numpy.random.RandomState可重现的伪随机性,尽管它也并没有做出您所追求的正式承诺。
numpy.random.RandomState
如果您想获得完全的可复制性,则可能需要在程序中包含random的源副本,或从一起破解“P²RNG”(伪-伪- RNG)hashlib。
hashlib