【问题标题】:which RNGversion am I using我使用的是哪个 RNG 版本
【发布时间】:2020-09-14 12:30:49
【问题描述】:

我知道我可以使用例如设置 RNGversion

RNGversion("3.5.2")

但是可以查询我当前使用的 R 版本吗?

编辑:

我的问题是 3.6.0 版本发生了一些变化,这在 RNGkind() 中不可见

例如

library(magrittr)

RNGversion("3.5.2")
RNGkind()
set.seed(1)
tibble::tibble(A = 1:5000) %>% 
  dplyr::sample_n(2)

产量:

> "Mersenne-Twister" "Inversion"        "Rounding"
> # A tibble: 2 x 1
     A
 <int>
  1328
  1861

但是:

RNGversion("4.0.2")
RNGkind()
set.seed(1)
tibble::tibble(A = 1:5000) %>% 
  dplyr::sample_n(2)

产量

> "Mersenne-Twister" "Inversion"        "Rejection"
> # A tibble: 2 x 1
  A
  <int>
1  1017
2  4775

两段代码都返回一个可重现的输出,但不同,即使 RNGkind() 返回相同的东西。因此我想知道 RNGvesion()

编辑 2:我不知何故错过了两个不同版本的 RNGkind() 输出的第 3 个元素的差异。

【问题讨论】:

  • RNGversion 只是设置RNGkind 以及您可以通过RNGkind() 获得的类型。

标签: r random


【解决方案1】:

研究RNGversion的源代码,说明白了。

getRversion()
#[1] ‘4.0.2’
RNGkind()
#[1] "Mersenne-Twister" "Inversion"        "Rejection" 

#pre 3.6
RNGversion("3.5")
RNGkind()
#[1] "Mersenne-Twister" "Inversion"        "Rounding" 

#pre 1.7
RNGversion("1.6")
RNGkind()
#[1] "Marsaglia-Multicarry"   "Buggy Kinderman-Ramage" "Rounding"

#pre 0.99
RNGversion("0.90")
RNGkind()
#[1] "Wichmann-Hill"          "Buggy Kinderman-Ramage" "Rounding"

如果要根据RNGkind 输出获取版本范围,则需要编写自己的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2018-08-14
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多