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')
返回默认生成器。
请注意,计算机生成的数字在技术上不是随机的,而是伪随机的。可能可以在不同的平台/语言上使用相同的生成器生成准确的数字。 (对此仍然不太确定-希望这是可能的)。
我一直在使用 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')
返回默认生成器。
请注意,计算机生成的数字在技术上不是随机的,而是伪随机的。可能可以在不同的平台/语言上使用相同的生成器生成准确的数字。 (对此仍然不太确定-希望这是可能的)。