我知道伪随机生成器是确定性的,即,当使用相同的种子时,它们产生相同的输出序列。实际上,只有当你在同一个平台上,即相同的硬件,操作系统等时才会这样。
我知道在某些情况下,当您在不同平台上运行相同的代码时,您可能会得到不同的答案(如此处简要指出:How to generate a repeatable random number sequence?)。
作为另一个例子,本文研究了一些神经成像应用背景下这种差异的一些原因: http://journal.frontiersin.org/article/10.3389/fninf.2015.00012/abstract
我的问题是这种现象是否有一个充分记录的解释。任何其他指针都表示赞赏。
换句话说,我担心的是在什么情况下伪随机发生器的可重复性会受到损害?如何避免这些情况(并真正保证跨平台的可重复性)?
答案 0 :(得分:0)
机器和操作系统的不同主要是因为它们使用不同的算法或不同的播种方法。如果你想要一台机器之间相同的PRNG,那就自己写吧,这样你就知道它是一样的。
还有许多非伪RNG使用或硬件设备和其他非确定性的熵源:这些包括/ dev / random,random.org等。如果您想要可重复性,请不要使用它们。如果您想要加密安全,请使用这些。