不同 Set.seed 样本函数结果与相同版本的 R 在不同 OS

Different Set.seed sample function results with same versions of R in different OS

设置种子后尝试使用示例功能,运行分别在Mac台电脑和windows10台电脑上使用代码。但是使用sample函数即使设置seed也有不同的结果。

例如:

在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.

此问题的一个可能原因是其中一台计算机仍在使用有问题的 sample() 算法,因为它保存在工作区中并在您启动 R 时重新加载。

您可以看到 运行 RNGkind() 使用了哪些 sample() 算法。 我看到 [1] "Mersenne-Twister" "Inversion" "Rejection" ,表明我正在使用 Mersenne twister 进行制服,对法线进行反演,对离散采样进行拒绝。

您还必须设置 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