存储随机状态

时间:2015-09-27 13:58:02

标签: python random

我正在设计一个程序:

  1. 包含随机性
  2. 可以停止执行并在某些点保存其状态(XML格式)
  3. 可以从已保存状态开始执行
  4. 是确定性的(因此程序可以从相同的状态运行两次并产生相同的结果)
  5. 这里的问题是保存随机性。我可以在开始时初始化它,但是从州到州,我可以生成0到1000个随机数。

    因此,我可以看到3个选项:

    1. 存储种子,并且随机生成一个数字的次数,然后在加载状态时,多次运行随机数生成器。
    2. 在状态保存时,将种子增加N
    3. 在状态保存时,随机生成下一个种子
    4. 选项1的问题是运行时间,并且非常不可行。

      但是,我不确定2或3是否会产生良好的随机结果。如果我运行两个随机生成器,一个用X播种,另一个用X + 1播种,它们的结果有多么不同?如果第一个用X播种,第二个用X.random()播种怎么办?

      如果它有所作为,我使用的是Python 3。

1 个答案:

答案 0 :(得分:3)

您可以使用random.getstate()保存PRNG的状态(然后,例如,使用pickle将其保存到磁盘。稍后,random.setstate(state)会将您的PRNG恢复到完全状态它在。