假设我想生成一个包含 10 个随机数的 vector 。我如何才能在 R 和 C++ 中这样做以获得相同的 vector ?
我知道在 C++ 中我必须先使用 srand() 然后再使用 rand() 而在 R 中,我可以使用 set.seed(),然后使用 runif。
但我怎样才能使它们相同呢?
最佳答案
如果您使用 R 的 C API——或者,更好的是,在其之上构建的 C++ 的 Rcpp 接口(interface)——那么您可以轻松访问相同 来自相同生成器的流。
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>
你注意到它们都在给定相同种子的情况下生成相同的数字。这是一项功能。
现在,您还可以将自己的 RNG 生成器从 C++ 代码引入 R。我在 RcppZiggurat package 中这样做哪个is also on CRAN .
关于c++ - R 和 C++ 中的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902724/