ばかげた質問ですが、ウェブで答えを探すのに時間をかけすぎて成功していません。boost::random::gamma_distribution オブジェクトと、pdf を計算したい float 値があります。
どの Boost モジュールを含める必要がありますか? また、ガンマの pdf を計算する関数を呼び出す方法は?
ありがとう
のぞき見しましたrandom/gamma_distribution.hpp
が、pdf を返すメソッドがないため、gamma_distribution のインスタンスは役に立ちません。ただし、boost::math::gamma_distributionは、ライブラリ関数を使用して pdf を定義するための実装ノートと式 (下部の表) を提供しますgamma_p_derivative
。
これで、pdf 関数を自分で組み立てることができます。
#include <boost/math/special_functions/gamma.hpp>
// Makes sense for k, theta, x greater than 0.
double gamma_pdf(double k, double theta, double x) {
return boost::math::gamma_p_derivative(k, x / theta) / theta;
}
そして、それは基本的にそれです。必要な定義が含まれているためgamma.hpp
、コンパイル中に追加のライブラリをリンクする必要はありません。
pdf
非メンバー関数があります。
#include <iostream>
#include <boost/math/distributions/gamma.hpp>
int main() {
double shape = 2;
double scale = 1;
boost::math::gamma_distribution<double> d(shape, scale);
std::cout << pdf(d, .5) << std::endl;
}