使用boost设置gamma_distribution的参数

时间:2012-08-15 17:44:29

标签: c++ boost random boost-random gamma-distribution

我正在尝试使用Boost 1.5中的Gamma发行版。 现在我希望 k theta 的值分别为4和.5。 但每当我设置 theta 的值时,我都会收到编译错误。 1。

/usr/local/include/boost/random/gamma_distribution.hpp:118: boost::random::gamma_distribution<RealType>::gamma_distribution(const RealType&, const RealType&) [with RealType = double]: Assertion `_beta > result_type(0)' failed.

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

看起来您没有正确地将参数传递给分布函数。这是C ++ 11版本(Boost等效地工作):

#include <random>
#include <iostream>
int main()
{   
    std::random_device rd;
    std::mt19937 gen(rd());
    double alpha = 4.0;
    double theta = 0.5;
    std::gamma_distribution<> gamma(alpha, 1.0 / theta);
    auto value = gamma(gen);

    // May print: 6.94045.
    std::cout << value << std::endl;

    return 0;
}

注意参数化:

  • alphak
  • 相同
  • beta反比例参数,与1 / theta相同。