GetRNGstate()
和 PutRNGstate()
对我来说是个谜。我已阅读 的第 6.3 节编写 R 扩展 但它只说“用户必须调用”它们和“这些基本上读入(或创建).Random.seed 并在使用后将其写出”。
我最初认为,如果我没有包含它们,那么 set.seed()
R 中的函数将无法在我的 Rcpp 函数上工作。所以我做了一些实验,但事实证明,如果没有 GetRNGstate()
,一切似乎都没有问题。和 PutRNGstate()
.我觉得我一定遗漏了一些东西,那么为什么以及何时应该包含这两个功能?
下面是我自己的实验:
// [[Rcpp::export]]
NumericVector myrv4(int n) {
NumericVector x = rnorm(n, 0.0, 1.0);
return x;
}
我的测试结果:
> n <- 2
> set.seed(1234)
> myrv4(n)
[1] -1.2070657 0.2774292
> set.seed(1234)
> myrv4(n)
[1] -1.2070657 0.2774292
最佳答案
您错过了使用 Rcpp Attributes 为您提供的事实,因为它应该包含它。尝试使用 , verbose=TRUE
构建查看
Rcpp::RNGScope __rngScope
为您插入自动魔法盟友。
关于r - 如果不包括 GetRNGstate() 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762927/