3

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

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

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

4

2 回答 2

5

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

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

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

于 2013-04-30T09:24:03.230 回答
-1

如果可重复性对您来说非常重要,我不确定我是否完全相信任何 PRNG 在给定相同种子的情况下总是产生相同的输出。您可能会考虑在一个阶段捕获随机数,将它们保存以供重复使用;然后在第二阶段,重播您捕获的随机数。这是消除不可重复性可能性的唯一方法——它也解决了您当前的问题。

于 2013-04-25T19:48:26.480 回答