python - 存储随机状态

标签 python random

我正在设计一个程序:

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

这里的问题是保存随机性。我可以在开始时对其进行初始化,但从一个状态到另一个状态,我可能会生成 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 返回到它所在的状态。

关于python - 存储随机状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808686/

相关文章:

python - 从 pdf 中删除一些图像和文本对象

Matlab 用随机元素生成矩阵

c# - bool 程序初学者说明

python - 回到字符串的开头

python - Celery:接收到类型为 <AsyncResult: [hash]> 的未注册任务

python - 在 sklearn 中将 Pipeline 与自定义类一起使用

c++ - 随机数生成器碰撞测试中的碰撞太多

c# - 生成1到6的随机数,停在最后一个

machine-learning - GAN 的随机噪声

javascript - 在 Flask Web 应用程序中使用 JS 地理定位 (Python 3.6.6)