R set.seed 由另一用户在另一台计算机上复制

R set.seed reproduce by another user on another computer

我一直在使用 set.seed 函数。这是 r 文档中的一个超级简单示例。

> set.seed(5)
> rnorm(5)
[1] -0.84085548  1.38435934 -1.25549186  0.07014277  1.71144087
> set.seed(5)
> rnorm(5)
[1] -0.84085548  1.38435934 -1.25549186  0.07014277  1.71144087

我有 R 版本 1.3.1093

现在,我在自己的 RStudio 中尝试了这些行并得到了相同的数字。一切顺利。

但我的问题是:如果我在涉及 set.seed 的另一台机器上将代码发送给另一个人,我能保证这个其他用户会得到相同的 5 个号码吗?为了知道这是真的,我需要考虑哪些事情?只要他们有与我使用的相同版本的 R,就可以保证吗?我想知道是否有一个 'test' 可以用来确保某人(例如,老板)只要 he/she 具有相同版本的 R 就可以获得完全相同的数据。

随机数生成取决于所使用的 RNG 类型。 R 使用 Mersenne-Twister 作为默认的 RNG 改变这不仅会改变不同平台的结果,甚至会改变同一台计算机上的结果。例如尝试做

RNGkind('Wich')
set.seed(5)
rnorm(5)

你会注意到你得到的结果是完全不同的。

请注意,根据所选的生成器,您会得到不同的结果,即使在同一台计算机上也是如此。 运行 RNGkind('default') 返回默认生成器。

请注意,计算机生成的数字在技术上不是随机的,而是伪随机的。可能可以在不同的平台/语言上使用相同的生成器生成准确的数字。 (对此仍然不太确定-希望这是可能的)。