是否可以创建可重复的随机数流?

Max*_*sin 4 python

Per 如何生成可重复的随机数序列?可以设置随机模块的状态,以便您可以期望后续调用randint返回相同的数字.

我用这种方法看到的一个限制是状态设置在模块级别(本质上是一个全局变量),所以似乎不可能创建几个可重复的随机数流/迭代器(但是流的调用可以任意交错) )与当前的机制.是否有任何变通办法/替代库可以实现这一目标?

bgp*_*ter 8

它没有在模块级,以保持状态-请参阅该文档random模块:

此模块提供的函数实际上是random.Random类的隐藏实例的绑定方法.您可以实例化您自己的Random实例,以获取不共享状态的生成器.这对于多线程程序特别有用,为每个线程创建一个不同的Random实例,并使用该jumpahead()方法使每个线程看到的生成序列可能不重叠.


Ada*_*mKG 5

random.Random() 是你在找什么.

http://hg.python.org/cpython/file/2.7/Lib/random.py#l72

所有random.*模块级函数都只是Random()生活在的共享实例的代理random._inst.

http://hg.python.org/cpython/file/2.7/Lib/random.py#l879

根据您的情况,您所做的只是实例化N个random.Random()实例; 它们将具有独立的内部RNG状态,并且可以在不相互影响的情况下播种/消费.

实际上,我认为最好的做法Random()是为非平凡的应用程序创建自己的实例,特别是如果存在状态相关的错误等,它可以很容易地重复.特别是在测试套件中,这可能是非常宝贵的.