在Rcpp和R中生成相同的随机变量
我正在将我的采样算法从R转换为Rcpp。Rcpp和R的输出不匹配Rcpp代码中存在一些错误(由于随机化,差异并没有不同)。我试图将Rcpp的内部变量与R代码中的内部变量进行匹配。然而,这是有问题的,因为来自分布的采样器导致随机化在Rcpp和R中生成相同的随机变量,r,debugging,rcpp,sampling,R,Debugging,Rcpp,Sampling,我正在将我的采样算法从R转换为Rcpp。Rcpp和R的输出不匹配Rcpp代码中存在一些错误(由于随机化,差异并没有不同)。我试图将Rcpp的内部变量与R代码中的内部变量进行匹配。然而,这是有问题的,因为来自分布的采样器导致随机化 Rcpp::rbinom(1, 1, 10) rbinom(1, 1, 10) 如何使代码在R和Rcpp中给出相同的输出,我的意思是从R和Rcpp设置一个公共种子?您在这里遇到了许多问题: rbinom(1,1,10)毫无意义,它会给你“警告信息:在rbin
Rcpp::rbinom(1, 1, 10)
rbinom(1, 1, 10)
如何使代码在R和Rcpp中给出相同的输出,我的意思是从R和Rcpp设置一个公共种子?您在这里遇到了许多问题:
rbinom(1,1,10)
毫无意义,它会给你“警告信息:在rbinom(1,1,10)中:NAs已生产”(我在这里加入了两行以显示)rbinom(10,1,0.5)
,它将从绘制一或零的p=0.5的二项式生成10个绘制
RNGScope
对象使用相同的RNG和相同的种子,这些对象是通过Rcpp属性免费获得的(见下文)我定义、编译、链接和加载一个自定义C++函数<代码> CPPRIOMO()/<代码>。然后我设置种子,并检索10个值。重置种子并在相同参数化下检索十个值会得到相同的值
这将适用于所有随机分布,除非我们引入了可能发生的错误 您在这里遇到了许多问题:
rbinom(1,1,10)
毫无意义,它会给你“警告信息:在rbinom(1,1,10)中:NAs已生产”(我在这里加入了两行以显示)rbinom(10,1,0.5)
,它将从绘制一或零的p=0.5的二项式生成10个绘制
RNGScope
对象使用相同的RNG和相同的种子,这些对象是通过Rcpp属性免费获得的(见下文)我定义、编译、链接和加载一个自定义C++函数<代码> CPPRIOMO()/<代码>。然后我设置种子,并检索10个值。重置种子并在相同参数化下检索十个值会得到相同的值
这将适用于所有随机分布,除非我们引入了可能发生的错误 请提供一个可复制的示例。请参阅;特别是
RNGScope
部分。请提供一个可复制的示例。请参阅;特别是RNGScope
部分。
R> cppFunction("NumericVector cpprbinom(int n, double size, double prob) { \
return(rbinom(n, size, prob)); }")
R> set.seed(42); cpprbinom(10, 1, 0.5)
[1] 1 1 0 1 1 1 1 0 1 1
R> set.seed(42); rbinom(10,1,0.5)
[1] 1 1 0 1 1 1 1 0 1 1
R>