Python numpy - 随机数的再现性

fya*_*yaa 3 python random numpy prng

我们有一个非常简单的程序(单线程),我们在其中进行了大量随机样本生成。为此,我们使用了多次numpy随机函数调用(如normalrandom_sample)。有时,一个随机调用的结果决定了另一个随机函数被调用的次数。

现在我想在开始时设置一个种子。我的程序的多次运行应该产生相同的结果。为此,我使用了numpyclass 的一个实例RandomState。虽然一开始就是这种情况,但有时结果会有所不同,这就是我想知道的原因。

当我正确地做所有事情时,没有并发性,从而线性调用函数并且没有涉及其他随机数生成器,为什么它不起作用?

fya*_*yaa 5

好吧,大卫是对的。numpy 中的 PRNG 工作正常。在我创建的每个最小示例中,它们都按预期工作。

我的问题是另一个问题,但最终我解决了它。不要在确定性算法中遍历字典。在调用 .item() 函数以获取迭代器时,Python 似乎对项目进行了任意排序。

所以我对这种错误并不感到失望,因为它是一个有用的提醒,提醒我们在尝试进行可重现的模拟时应该考虑什么。