【问题标题】:R set.seed reproduce by another user on another computerR set.seed 由另一用户在另一台计算机上复制
【发布时间】:2021-03-02 07:59:22
【问题描述】:

我一直在使用 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 版本与我使用的相同,就可以保证吗?我想知道是否有一个“测试”可以用来确保某人(例如,老板)只要他/她拥有相同版本的 R,就能获得完全相同的数据。

【问题讨论】:

  • 我不确定答案,但我只想补充一点,我用 R 4.0.3 和 3.6.3 测试并得到相同的值。
  • 哦,谢谢,这对了解很有帮助
  • 没有“R 1.3.1093”。那是您的 RStudio 版本,它独立于您拥有的 R 安装。
  • 感谢我在控制台中输入了“版本”,这就是我得到的。貌似我有 3.6.1 这个昵称的东西超诡异 version.string R version 3.6.1 (2019-07-05) 昵称 Action of the Toes

标签: r seed


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 2015-09-08
    • 2016-04-16
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多