0

我的目的是创建一个关于如何在 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 随机生成器中以使代码片段尽可能通用?

4

0 回答 0