set.seed在不同版本的R(和Ubuntu)上是否一致?

set.seed在不同版本的R(和Ubuntu)上是否一致?,r,ubuntu,random-seed,R,Ubuntu,Random Seed,我目前正在运行R版本3.1.0(在Ubuntu12.04 LTS上),由于我的R版本和我的操作系统都变得相当旧,我计划同时更新这两个版本。然而,我有很多模拟都依赖于set.seed(),我希望他们在更新R和我的操作系统后仍然能给我相同的随机数 所以我的问题有三个方面 我可以在不更改每个种子生成的数字的情况下更新R吗 我可以对我的操作系统执行同样的操作吗 如果1)或2)为否,是否有办法更改代码中的种子,使其与旧种子一致 在几个R版本(3.1.0、3.3.1、3.4.2)和两台不同的机器(Windo

我目前正在运行R版本3.1.0(在Ubuntu12.04 LTS上),由于我的R版本和我的操作系统都变得相当旧,我计划同时更新这两个版本。然而,我有很多模拟都依赖于set.seed(),我希望他们在更新R和我的操作系统后仍然能给我相同的随机数

所以我的问题有三个方面

  • 我可以在不更改每个种子生成的数字的情况下更新R吗
  • 我可以对我的操作系统执行同样的操作吗
  • 如果1)或2)为否,是否有办法更改代码中的种子,使其与旧种子一致

  • 在几个R版本(3.1.0、3.3.1、3.4.2)和两台不同的机器(Windows 7 x64、Windows 10 x64)上进行测试后,我得到了相同的
    runif()
    随机数,具有相同的
    set.seed()
    ,与R版本和操作系统无关。据我所知,这表明问题1和2都是肯定的

    在几个R版本(3.1.0、3.3.1、3.4.2)和两台不同的机器(Windows 7 x64、Windows 10 x64)上进行测试后,我得到了相同的
    runif()
    随机数,具有相同的
    set.seed()
    ,与R版本和操作系统无关。据我所知,这表明问题1和2都是肯定的

    跨操作系统一致性:是 如果在两个不同的操作系统上安装了R,而没有手动更改默认值或
    R配置文件
    ,则使用
    set.seed()
    时应该会得到相同的结果

    R版本的一致性:不一定 过去的情况是,
    set.seed()
    会在R版本中给出相同的结果,但由于R3.6.0中发布了一个小小的更新,这种情况已不再普遍存在。因此,您可以在R3.6.0之前获得跨版本一致性比较结果,但如果将3.6.0之后使用的
    set.seed()
    与3.6.0之前使用的
    set.seed()
    进行比较,您将得到不同的结果

    您可以在下面的示例中看到:

    R 3.2.0 R 3.5.3 R 3.6.0 不一致的原因是在R 3.6.0中。现在,为了从
    set.seed()
    获得匹配的结果,必须首先调用函数
    RNGkind(sample.kind=“Rounding”)

    R 3.6.0 跨操作系统一致性:是 如果在两个不同的操作系统上安装了R,而没有手动更改默认值或
    R配置文件
    ,则使用
    set.seed()
    时应该会得到相同的结果

    R版本的一致性:不一定 过去的情况是,
    set.seed()
    会在R版本中给出相同的结果,但由于R3.6.0中发布了一个小小的更新,这种情况已不再普遍存在。因此,您可以在R3.6.0之前获得跨版本一致性比较结果,但如果将3.6.0之后使用的
    set.seed()
    与3.6.0之前使用的
    set.seed()
    进行比较,您将得到不同的结果

    您可以在下面的示例中看到:

    R 3.2.0 R 3.5.3 R 3.6.0 不一致的原因是在R 3.6.0中。现在,为了从
    set.seed()
    获得匹配的结果,必须首先调用函数
    RNGkind(sample.kind=“Rounding”)

    R 3.6.0
    随机数生成是使用一种算法完成的
    set.seed()
    将种子传递给它。因此,它不应该依赖于OS和R版本。因此,1。对2.是的。随机数的生成是通过一个算法完成的
    set.seed()
    将种子传递给它。因此,它不应该依赖于OS和R版本。因此,1。对2.是的,谢谢你的回复。我意识到这很容易测试。因此,我在两台计算机上运行了set.seed(75842)rnorm(3),使用了不同的操作系统和不同版本的R。在这两种情况下,我都得到了[1]1.5704983-0.9103801 0.6197490,因此从这个角度进行升级似乎是安全的。感谢您的回复。我意识到这很容易测试。因此,我在两台计算机上运行set.seed(75842)rnorm(3),使用不同的操作系统和不同版本的R。在这两种情况下,我得到了[1]1.5704983-0.9103801 0.6197490,因此从这个角度来看,升级似乎是安全的。
    > set.seed(1999)
    > sample(LETTERS, 3)
    [1] "T" "N" "L"
    
    > set.seed(1999)
    > sample(LETTERS, 3)
    [1] "T" "N" "L"
    
    set.seed(1999)
    sample(LETTERS, 3)
    [1] "D" "Z" "R"
    
    > RNGkind(sample.kind = "Rounding")
    Warning message:
    In RNGkind(sample.kind = "Rounding") : non-uniform 'Rounding' sampler used
    > set.seed(1999)
    > sample(Letters, 3)
    [1] "T" "N" "L"