Armadillo使用的随机数生成器是什么?

时间:2016-12-20 20:46:28

标签: c++ r random rcpp armadillo

我正在使用R. Armadillo C ++库中的随机数生成器.Armadillo允许对矩阵和向量进行高性能计算。但是,我无法看到它实际实现的是哪个随机数生成器。

Rcpp Armadillo使用的随机数生成器是什么?

1 个答案:

答案 0 :(得分:6)

  

根据RcppArmadillo是针对C ++ 98标准(当前是默认值)还是针对C ++ 11(可选)进行编译,可以使用两种不同的RNG。 [...]对于C ++ 98,使用系统库RNG。它可能性能较差,尤其是在旧版本的Windows上。对于C ++ 11,使用其库中包含的RNG。 - RcppArmadillo Documentation

“对于C ++ 98,使用了系统库RNG。” - 系统库RNG为std::rand(),尽管似乎RcppArmadillo使用R中的RNG作为回退(当没有选择C ++ 11以便基于C ++ 11的RNG不可用时),这避免使用旧的基于C ++ 98的std::rand() 1

“对于C ++ 11,使用其库中包含的RNG。” - 这是指C ++ 11 <random>库。

另一方面,还要考虑this comment in RcppArmadilloForward.h

// using this define makes the R RNG have precedent over both the
// C++11-based RNG provided by Armadillo, as well as the C++98-based
// fallback.
//
// One can use the C++11-based on by commenting out the following
// #define and also selecting C++11 (eg via src/Makevars* or the
// DESCRIPTION file) and/or defining #define-ing ARMA_USE_CXX11_RNG
#define ARMA_RNG_ALT         RcppArmadillo/Alt_R_RNG.h

打开R RNG作为RcppArmadillo的引擎。

1 R-bloggers | RcppArmadillo 0.4.450.1.0