c++ - R 和 C++ 中的随机数

标签 c++ r random

假设我想生成一个包含 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/

相关文章:

Ruby//range之间的随机数,保证对其他已有存储的唯一性

r - 嵌套for循环的向量化

R:我可以让函数的执行环境永久化吗?

r - 观星者在摘要列表上

c++ - 随机函数可以返回的范围是多少?

r - 如何创建有偏随机数生成器?

c# - 在 C# 或 C++ 中将压缩的 wav 文件转换为未压缩的 wav 文件的最简单方法是什么?

c++ - 捕捉 QWidget 真实可见性状态变化

c++ - Boost:如何删除顶点的所有出边

python - yield 和返回有何不同?