【发布时间】:2021-01-25 21:19:56
【问题描述】:
这个问题与以下问题相似(但不一样!)...
Different sample results using set.seed command?
Is set.seed consistent over different versions of R (and Ubuntu)?
Same seed, different OS, different random numbers in R
...其中RNGkind()建议在脚本中使用set.seed()设置种子时保证OS / R版本之间的一致性
但是,我发现为了在我使用的 unix 和 windows 系统上重现结果,我必须在 Windows 上运行时设置 RNGkind(sample.kind = "Rounding") 而在 unix 上不。如果我同时设置它,我将无法重现结果。
谁能解释系统中的这种差异? 以及如何在不了解最终用户操作系统的情况下与 set.seed() 共享代码并确保其可重现?
非常感谢
编辑:我在使用 kmeans() 函数时遇到了这个问题。我在每次使用kmeans()之前set.seed(1)
【问题讨论】:
-
一个没有。无法在不同操作系统之间可靠地确保重现性。
-
如果很重要,您可以考虑将系统生成的随机数硬编码为外部数据文件(如果大)或
dput(如果小) -
您需要向我们展示您发现不一致的代码。如果种子和
sample.kind匹配,sample()函数(sample.kind影响)将给出相同的结果。其他事物(例如算术!)可能因系统而异,但sample()不会。 -
@Roland,您的评论不正确。 R 中的 RNG 在确保跨操作系统的可重复性方面非常好。算术存在细微差别(64 位精度与 80 位精度,一些数学库),但 RNG 没有,它们大多独立于此。我的回答中有一些细节说明人们最终会如何对此感到困惑。
-
@user2554330 感谢您的评论,我已在问题中添加了更多信息。
kmeans()函数有这个问题。
标签: r