set.seed在不同版本的R(和Ubuntu)上是否一致?
我目前正在运行R版本3.1.0(在Ubuntu12.04 LTS上),由于我的R版本和我的操作系统都变得相当旧,我计划同时更新这两个版本。然而,我有很多模拟都依赖于set.seed(),我希望他们在更新R和我的操作系统后仍然能给我相同的随机数 所以我的问题有三个方面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、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"