1

我知道伪随机生成器是确定性的,即,当使用相同的种子时,它们会产生相同的输出序列。在实践中,只有当你在同一个平台上时,这一切都是正确的,即相同的硬件、操作系统等。

但是我知道在某些情况下,当你在不同的平台上运行相同的代码时,你可能会得到不同的答案(这里简要指出:如何生成可重复的随机数序列?)。

作为另一个例子,本文研究了在一些神经成像应用的背景下造成这种差异的一些原因:http: //journal.frontiersin.org/article/10.3389/fninf.2015.00012/abstract

我的问题是对于这种现象是否有一个普遍的、有据可查的解释。任何其他指针表示赞赏。

换句话说,我关心的是在什么情况下会危及伪随机生成器的再现性?以及如何避免这些情况(并真正保证跨平台的可重复性)?

4

1 回答 1

0

你很困惑。根据定义,PRNG 是完全确定的。它们不可能是其他的,因为它们运行在确定性硬件上。在不同机器上运行相同的算法将产生相同的结果。

机器和操作系统的不同主要是因为它们使用不同的算法或不同的播种方法。如果您想要机器之间相同的 PRNG,只需自己编写它,这样您就知道它是相同的。

还有很多非伪 RNG 使用或硬件设备和其他不确定的熵源:这些包括 /dev/random、random.org 等。如果您想要可重复性,请不要使用这些。如果您想要加密安全,请使用这些。

于 2015-04-20T15:44:44.093 回答