存储无序状态

存储无序状态

问题描述:

我设计一个程序:存储无序状态

  1. 包括随机性
  2. 可以停止执行,并在某些点保存(以XML)的状态
  3. 可以开始执行从保存的开始状态
  4. 是确定性的(这样的程序可以从相同的状态运行两次,并产生相同的结果)

这里的问题是S提供随机性。我可以在开始时初始化它,但是从状态到状态,我可能会生成0到1000个随机数字。

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

  1. 商店的种子,以及一些已经随机产生的次数,然后加载状态时,运行多次随机数发生器。
  2. 在状态保存,由N个
  3. 递增种子在状态保存,随机产生的下一个种子

与选项1的问题是运行时间,并且是相当不可行的。

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

如果它的确与众不同,我使用Python 3

可以使用random.getstate()(然后保存PRNG的状态,例如,使用pickle将其保存到磁盘上。后来,一个random.setstate(state)会将您的PRNG恢复到原来的状态。