我想在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