优惠券收集器的表达式给出了错误的输出

时间:2015-09-17 17:52:42

标签: c++ probability

这是优惠券收集器问题https://en.wikipedia.org/wiki/Coupon_collector' s_problem
问题 - http://www.spoj.com/problems/FAVDICE/

 y=n*log(n)+0.5*n+0.5;

编辑: 预期产量为37.24,而n = 12则为35.82 表达式中可能出现什么错误?

1 个答案:

答案 0 :(得分:1)

回到维基百科的文章;检查你的伽玛值

const float GAMMA = 0.577215664;
y=n*log(n)+GAMMA*n+0.5;

输出

37.2455

或者更好的是完全删除了伽玛

double H(int n){
    double sum = 0.0;
    for(int i = 1; i <= n; i++){
        sum += 1/double(i);
    }
    return sum;
}
...
cout << setprecision(4) << n*H(n);