我正在调查是否有可能让两组软件就生成的伪随机数序列达成一致.我有兴趣了解所有可能的分歧点,因为我实际上找到了让他们同意的方法.
为什么?我在数据商店工作,使用许多不同的软件包(Stata,R,Python,SAS,可能还有其他软件包).最近通过复制另一种语言的过程对QCing输出感兴趣.对于涉及随机数的任何过程,如果我们可以提供一系列允许两个包同意的步骤("设置此选项"等)将会很有帮助.如果这不可行,我希望能够清楚地说明失败点在哪里.
一个简单的例子:
R和Python的默认随机数生成器都是Mersenne-Twister.我将它们设置为相同的种子并尝试从中进行采样,并查看PRNG的"状态".两个价值都没有达成一致.
R(3.2.3,64位):
set.seed(20160201)
.Random.seed
sample(c(1, 2, 3, 4, 5))
Run Code Online (Sandbox Code Playgroud)
Python(3.5.1,64位):
import random
random.seed(20160201)
random.getstate()
random.sample([1, 2, 3, 4, 5], 5)
Run Code Online (Sandbox Code Playgroud)