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