我的目的是创建一个关于如何在 Python 中进行可重现计算的指南(如果可能,不管环境、操作系统等)。然而,生成随机数的问题一直在我脑海中浮现。我正在努力寻找一种防弹方法(如果有的话)。
如何使随机生成器的输出可重现的标准方法是使用
import random
random.seed()
据我所知,种子的自动选择取决于系统。(请参阅Python 中的random.seed文档。)
因此,更好的方法是使用特定的数字来播种生成器。
import random
random.seed(0)
但是,有些库不使用内置 random 而是使用numpy.random
. 因此,您还需要播种numpy
的生成器。
import numpy
numpy.random.seed(0)
内置random
作为单例工作,我想numpy.random
以相同的方式工作。这意味着您设置一次种子,然后在任何地方使用它。
我想创建一个代码片段,您可以在代码开头使用它,这将确保随机生成器的计算可重复性。
有没有更好的方法,然后结合两个生成器并设置两个种子,甚至可能保持跨操作系统的可重复性?您是否熟悉任何广泛使用的伪随机生成器,应该将其添加到内置随机生成器和 numpy 随机生成器中以使代码片段尽可能通用?