相当于R的set.seed()函数的C ++

时间:2019-03-21 20:03:44

标签: c++ r random rcpp

我想在C ++函数中执行与R的set.seed()等效的操作。我该怎么做?

请注意,我通过Rcpp软件包在R中提供了此C ++函数。我希望myfun(seed=42)每次在R中调用时都返回相同的结果。我不想在每次调用set.seed()之前通过myfun在R中设置rng种子。 / p>

C ++文件:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
double myfun(double seed) {
  std::srand(seed); // <-- this doesn't do what i want
  return R::rnorm(0,1);
}

/*** R
myfun(42)
myfun(42)
*/

当前返回:

> myfun(42)
[1] 0.737397

> myfun(42)
[1] -0.02764103

我想要的是:

> myfun(42)
[1] 0.737397

> myfun(42)
[1] 0.737397

0 个答案:

没有答案