gpt4 book ai didi

r - Poisson draw in Rcpp 和 R 不同的结果

转载 作者:行者123 更新时间:2023-12-05 08:36:04 26 4
gpt4 key购买 nike

当我在 RRcpp 中使用相同的代码时,我遇到了以下矛盾

R 中,我运行以下代码

t = 0
for(i in 1:50){
t = t + rpois(1, 0.5)
}
t
[1] 28

然后我取回一个非负值 t。现在我在 Rcpp

中键入完全相同的命令
#include <Rcpp.h>
#include<Rmath.h>
using namespace Rcpp;

// [[Rcpp::export]]
int Pois(int l){
int t=0;
for(int i=0; i<50;++i){
t+=R::rpois(l);
}
return t;
}

当我在 R

中调用函数时
Pois(0.5)
[1] 0

这是错误的,因为在 R 中它不同于零

出了什么问题?

最佳答案

你应该使用double l而不是int l,例如,

int Pois(double l){ 
int t=0;
for(int i=0; i<50;++i){
t+=R::rpois(l);
}
return t;
}

否则 (int) 0.5 给你 0

关于r - Poisson draw in Rcpp 和 R 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70900384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com