发布随机模拟数据的指南

计算科学 随机 出版物
2021-12-04 15:30:31

所以,我的问题是,理想情况下,是否应该记录在发布涉及一个或多个随机数生成器(例如随机模拟)的数值工作时使用的所有种子,如果是这样,是否有标准方法来执行此操作随机数生成器的数量取决于运行程序的硬件。一方面,拥有准确的种子记录可能有助于可重复性和正确性认证,但另一方面,统计结果应该足够稳健,以至于确切的种子并不重要。

1个回答

对于在分布式计算集群中的可变数量的处理器上运行的代码实现结果的逐位再现性即使不是不可能,也是极其困难的——有太多的随机因素可以改变结果。即使在共享内存多处理器上,获得逐位再现性也可能非常困难,并且需要进行重大的性能折衷。

例如,英特尔的 MKL 库具有“条件数值再现性”模式,其中库例程将始终返回完全相同的结果,但这是以性能为代价的。

您可以尝试使用相同的种子和相同数量的处理器重新运行模拟,以查看是否获得完全相同的结果。除非您的代码经过仔细编写以确保可重复性,否则您很可能会看到结果中的一些变化。

如果您的结果不能逐位重现,那么您必须决定是否愿意深入研究代码来解决这些问题,或者您是否愿意接受不完全可重现但始终在可接受的范围内。

在任何情况下,如果您正在执行蒙特卡洛模拟,您将需要统计分析您的输出 - 具有指定 RNG 种子的蒙特卡洛模拟的单一实现可能是可重现的,但这只是许多实现中的一种其他种子的结果。