随机数的Python数重复性

2024-03-29 08:55:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个非常简单的程序(单线程),在那里我们做一堆随机样本生成。为此,我们使用了几个numpy随机函数的调用(比如normal或{})。有时一个随机调用的结果决定了另一个随机函数被调用的次数。在

现在我要在开始的时候播下种子。多次运行我的程序应该会产生相同的结果。为此,我使用numpyRandomState的实例。虽然这是一开始的情况,但在某些时候,结果会变得不同,这就是为什么我想知道。在

当我做的每件事都是正确的,没有并发性,因此是函数的线性调用,也没有涉及其他随机数生成器,为什么它不能工作?在


Tags: 实例函数程序numpy情况线性次数种子
2条回答

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

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

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

如果再现性对你很重要,我不确定我是否完全相信任何一个PRNG都能在相同的种子下产生相同的输出。您可以考虑在一个阶段捕获随机数,将其保存以供重用;然后在第二个阶段,重放捕获的随机数。这是消除不可重复性的唯一方法,它也解决了当前的问题。在

相关问题 更多 >