我正在尝试使用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.
有没有办法解决这个问题?
答案 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;
}
注意参数化:
alpha
与k
beta
反比例参数,与1 / theta
相同。