R set.seed()函数与sample()函数结合使用时,是否总是提供与所用硬件无关的相同样本?

R set.seed()函数与sample()函数结合使用时,是否总是提供与所用硬件无关的相同样本?,r,sample,R,Sample,我运行了sample()命令和set.seed()命令,以获得始终相同的样本,并且一切正常。然而,在不同的笔记本电脑上应用相同的命令会得到不同的示例。有人知道发生了什么事吗 我还尝试了组合set.seed()和rnorm(),令人惊讶的是,我在两台笔记本电脑上得到了完全相同的随机数 set.seed(123) sample(LETTERS,6) set.seed(123) rnorm(6,1,1) 我希望在两台笔记本电脑上都会显示结果“H”“T”“J”“U”“W”“A”。但是,一台笔记本电脑

我运行了
sample()
命令和
set.seed()
命令,以获得始终相同的样本,并且一切正常。然而,在不同的笔记本电脑上应用相同的命令会得到不同的示例。有人知道发生了什么事吗

我还尝试了组合
set.seed()
rnorm()
,令人惊讶的是,我在两台笔记本电脑上得到了完全相同的随机数

set.seed(123)
sample(LETTERS,6)

set.seed(123)
rnorm(6,1,1)
我希望在两台笔记本电脑上都会显示结果“H”“T”“J”“U”“W”“A”。但是,一台笔记本电脑显示结果为“O”“S”“N”“C”“J”“R”

产生

0.4395244 0.7698225 2.5587083 1.0705084 1.1292877 2.7150650

在两台笔记本电脑上。

这不是由于跨硬件再现性问题,而是R3.6.0中引入的一个差异——必须在R3.6.0上安装一台机器,在早期版本上安装另一台机器。从
帮助(“set.seed”)
(来自R3.6.0):

set.seed(123)
sample(LETTERS,6)

set.seed(123)
rnorm(6,1,1)
用法


set.seed(seed,kind=NULL,normal.kind=NULL,sample.kind=NULL)

细节

sample.kind可以是“舍入”或“拒绝”,也可以是部分匹配 这些前者是3.6.0之前版本中的默认值:它使 样本在大量人群中明显不均匀,且仅应 用于复制旧结果。有关讨论,请参见PR#17494

观察以下内容以查看机器内部的差异(即,这表明这不是一个跨硬件问题,因为我只在一台机器上执行此操作):

set.seed(123,sample.kind=“拒绝”)#R3.6.0中的默认值
样本(字母,6)
#[1]“O”“S”“N”“C”“J”“R”
set.seed(123,sample.kind=“舍入”)#R<3.6.0中的默认值
样本(字母,6)
#[警告省略]
#[1]“H”“T”“J”“U”“W”“A”

两台机器都使用相同的R版本3.6.0运行。很好,这解决了我的问题。我刚刚调整了sample.kind选项。谢谢你的帮助!
set.seed(123, sample.kind = "Rejection") # Default in R 3.6.0
sample(LETTERS, 6)
# [1] "O" "S" "N" "C" "J" "R"

set.seed(123, sample.kind = "Rounding") # Default in R < 3.6.0
sample(LETTERS, 6)
# [Warning omitted]
# [1] "H" "T" "J" "U" "W" "A"