不同系统和版本间Python伪随机数的可复现性?
我需要根据一个初始参数生成一串可控的伪随机数。为此,我使用了标准的Python随机数生成器,并用这个参数作为种子。我想确保在不同的系统(操作系统,甚至Python版本)上生成的随机数序列是一样的。
简单来说:Python能保证它的伪随机数生成器在不同的实现和版本之间是可重复和可移植的吗?
5 个回答
13
不,这并不是这样。random
模块的文档中没有这样的承诺。
文档中提到的是这条备注:
在2.3版本中更改:MersenneTwister替代了Wichmann-Hill,成为默认的生成器
所以在Python 2.3之前,使用的是不同的随机数生成器。
到目前为止,我一直在使用numpy.random.RandomState
来生成可重复的伪随机数,尽管它也没有提供你想要的正式承诺。
如果你想要完全的可重复性,你可能需要在你的程序中包含一份random
的源代码,或者从hashlib
中拼凑一个“P²RNG”(伪伪随机数生成器)。