我正在设计一个程序:
- 包括随机性
- 可以在某些点停止执行并保存其状态(在 XML 中)
- 可以从保存的状态开始执行
- 是确定性的(因此程序可以从相同的状态运行两次并产生相同的结果)
这里的问题是保存随机性。我可以在开始时对其进行初始化,但从一个状态到另一个状态,我可能会生成 0 到 1000 个随机数。
因此,我可以看到 3 个选项:
- 存储种子,随机生成数字的次数,然后在加载状态时,运行随机数生成器多次。
- 在状态保存时,将种子递增 N
- 在状态保存时,随机生成下一个种子
选项 1 的问题在于运行时间,而且非常不可行。
但是,我不确定是 2 还是 3 会产生好的随机结果。如果我运行两个随机生成器,一个以 X 为种子,另一个以 X+1 为种子,它们的结果会有何不同?如果第一个用 X 播种,第二个用 X.random() 播种怎么办?
以防万一,我使用的是 Python 3。
最佳答案
您可以使用 random.getstate()
保存 PRNG 的状态(然后,例如,使用 pickle
将其保存到磁盘。稍后,一个 random.setstate(state)
会将您的 PRNG 返回到它所在的状态。
关于python - 存储随机状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808686/