我正在使用 numpy.random 进行蒙特卡罗模拟,其中可能有非常小的接受/拒绝概率。虽然我正在播种 RNG,但我无法重现相同的随机数序列。在 numpy 1.15.1 的文档中它说:
兼容性保证:使用相同参数的固定种子和对“RandomState”方法的一系列固定调用将始终产生相同的结果,直至舍入误差,除非值不正确。不正确的值将被修复,并且修复的 NumPy 版本将在相关文档字符串中注明。只要先前的行为保持不变,就允许扩展现有参数范围和添加新参数。
首先,不正确的值是什么意思?其次,如何处理舍入误差?值不总是以完全相同的方式四舍五入吗?即使我提供了种子,我的代码是否有可能完全确定?我确信种子不会在其他任何地方重置,因为我将我的 RNG 对象作为参数提供给我的每个函数。
编辑:原来我在我的模拟中使用了 set()s。我相信这就是我失去决定论的地方。