这是一个 C++ 函数,用于绘制N
具有均值零和标准差的独立正态偏差s
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace Rcpp;
// [[Rcpp::export]]
List rnorm_cpp(double s, int N){
arma::colvec epsilon = s * arma::randn(N);
return List::create(Named("e") = epsilon);
}
这是一个(几乎相同的)R版本
rnormR <- function(s, N){
epsilon <- rnorm(N, mean = 0, sd = s)
return(list(e = epsilon))
}
采购后rnorm_cpp
,rnormR
我运行了以下命令:
set.seed(1234)
fooR <- rnormR(s = 5, N = 10)
set.seed(1234)
barR <- rnormR(s = 5, N = 10)
set.seed(1234)
fooCpp <- rnorm_cpp(s = 5, N = 10)
set.seed(1234)
barCpp <- rnorm_cpp(s = 5, N = 10)
最后,我运行identical
并得到以下结果:
> identical(fooR, barR)
[1] TRUE
> identical(barR, fooCpp)
[1] FALSE
> identical(fooCpp, barCpp)
[1] FALSE
我期待得到TRUE
所有这三个。我怎样才能:(1)在调用中复制随机抽奖和(2)在调用和时rnorm_cpp
获得相同的抽奖?rnormR
rnorm_cpp