设置seed后,我尝试使用样例函数,并分别在Mac电脑和windows 10电脑上运行代码。然而,即使设置种子,使用样本函数也有不同的结果。
例如:
Mac:
> set.seed(1)
> sample(100,3)
[1] 68 39 1
Windows:
> set.seed(1)
> sample(100,3)
[1] 27 37 57
然而,rnorm函数工作正常:
> set.seed(2)
> rnorm(3)
[1] -0.8969145 0.1848492 1.5878453
有人面临同样的问题吗?R版本为4.1.1.
您还必须设置kind
:
set.seed(1, "Mersenne-Twister", sample.kind="Rounding")
sample(100,3)
#[1] 27 37 57
set.seed(1, "Mersenne-Twister", sample.kind="Rejection")
sample(100,3)
#[1] 68 39 1
这个问题的一个可能的原因是其中一台计算机仍然在使用有问题的sample()
算法,因为它保存在工作空间中,并在启动r时重新加载。
通过运行RNGkind()
可以看到正在使用哪些sample()
算法。我看到[1] "Mersenne-Twister" "Inversion" "Rejection"
,表明我正在使用梅森扭扭器进行均匀,为法线进行反转,并对离散采样进行抑制。