我结合使用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”。
set.seed(123)
rnorm(6,1,1)
产生
0.4395244 0.7698225 2.5587083 1.0705084 1.1292877 2.7150650
在两台笔记本电脑上。
答案 0 :(得分:1)
这不是由于跨硬件可重复性问题引起的,而是R 3.6.0中引入的差异–您必须在一台计算机上安装R 3.6.0,另一台计算机上安装早期版本。从help("set.seed")
起(从R 3.6.0起):
用法
...
set.seed(seed,kind = NULL,normal.kind = NULL,sample.kind = NULL)
...详细信息
sample.kind可以是“ Rounding”或“ Rejection”,或部分匹配 这些。前者是3.6.0之前的版本中的默认设置: 样本在大量人群中明显不均匀,应仅在 用于复制旧结果。有关讨论,请参见PR#17494。
观察以下内容,以发现与机器之间的区别(即,这表明它不是跨硬件问题,因为我仅在一台机器上这样做):
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"