Jam*_*mes 2 c++ r random-sample
假设我想要生成10个随机数的向量.我怎样才能在R和c ++中这样做,以便得到相同的向量?
我知道在C++中我必须使用srand()然后使用rand()而在RI中可以使用set.seed()然后使用runif.
但是我怎么能让他们变得一样呢?
Dir*_*tel 11
如果您使用C API来的R -或者更好的是,该RCPP接口,用于C++建立在它之上-那么你得到方便地访问到同来自同一发电机流.
R> library(Rcpp) # load Rcpp
R> cppFunction("NumericVector myrnorm(int n) { return rnorm(n); }")
R> # now we have a C++ function access n N(0,1) numbers
R> set.seed(41); myrnorm(3)
[1] -0.794368 0.197258 1.001704
R>
R> # same thing in R
R> set.seed(41)
R> rnorm(3)
[1] -0.794368 0.197258 1.001704
R>
Run Code Online (Sandbox Code Playgroud)
您注意到它们在给定相同种子的情况下都生成相同的数字.这是一个功能.
现在,您还可以从C++代码将自己的RNG生成器带到R中.我这样做,例如在RcppZiggurat包中也是在CRAN上.
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |