存储无序状态
问题描述:
我设计一个程序:存储无序状态
- 包括随机性
- 可以停止执行,并在某些点保存(以XML)的状态
- 可以开始执行从保存的开始状态
- 是确定性的(这样的程序可以从相同的状态运行两次,并产生相同的结果)
这里的问题是S提供随机性。我可以在开始时初始化它,但是从状态到状态,我可能会生成0到1000个随机数字。
因此,我有3个选择,我可以看到:
- 商店的种子,以及一些已经随机产生的次数,然后加载状态时,运行多次随机数发生器。
- 在状态保存,由N个
- 递增种子在状态保存,随机产生的下一个种子
与选项1的问题是运行时间,并且是相当不可行的。
但是,我不确定2或3是否会产生好的随机结果。如果我运行两个随机生成器,一个用X播种,另一个用X + 1播种,他们的结果会有多不同?如果第一个用X播种,第二个用X.random()播种呢?
如果它的确与众不同,我使用Python 3
答
可以使用random.getstate()
(然后保存PRNG的状态,例如,使用pickle
将其保存到磁盘上。后来,一个random.setstate(state)
会将您的PRNG恢复到原来的状态。