1

我正在测试一个随机算法。为了使结果可重现,我计划使用相同的随机种子,并在发布时将这个种子数(一个整数)与基准结果一起包括在内。

但我对随机种子有一个幼稚的问题。如果使用相同的随机种子,其他使用不同机器的人是否可以保证重现我的结果?其实我对随机种子的原理知之甚少。诚然,许多网站或多或少地详细解释了它,但也许你对这个话题有一些想法可以分享?

具体来说,我有一个基于scipy.optimize程序的 python 项目。我将使用numpy.random.seed(42)我发布的基准测试结果,并期望其他人在我的机器上获得相同的结果,只要使用相同的种子编号。是否有意义?

4

1 回答 1

2

如果您的意思是“相同的算法,正确编译和执行,在不同的机器(计算机、算盘或'计数棒')上运行是否会提供完全相同的数字(受 FP 错误和舍入)”,那么答案是肯定的。

如果您的意思是更字面意义上的“......它是否相同。我可以在 Wendy's 点一个麦当劳汉堡(或者甚至在那里做饭)并且它是否相同”,那么答案是否定的。

更准确地说,“基准测试结果在不同机器(甚至两台型号完全相同的计算机)上不会相同,除了罕见的巧合(这比比较完全不同的机器更有可能发生,即:算盘的乘法速度与计算器)。从相同算法(方法)得出的数字(答案)将相同(受 FP 误差和舍入),但“基准”几乎总是不同。

于 2015-12-24T18:40:53.560 回答