2

boost::math のガンマ分布を使用しようとしていますが、boost::variate_generator では使用できないようです。誰かがそれを確認できますか?もしくは使い道はありますか。

おそらく使用できる文書化されていないboost::gamma_distributionがあることを発見しましたが、ベータではなく分布からアルファパラメータのみを選択できます。

ありがとう!

4

1 に答える 1

4

このリンクで述べたように、rng の出力に目的のスケールを掛けるだけで、Boost (または TR1) の 1 パラメータ ガンマ分布を拡張できます。

variate_generator以下は、平均と分散によってパラメーター化されたガンマ分布から数値を描画するために使用するサンプル コードです。

#include <boost/random.hpp>
#include <boost/random/gamma_distribution.hpp>

double rgamma( double mean, double variance, boost::mt19937& rng ) {
  const double shape = ( mean*mean )/variance;
  double scale = variance/mean;

  boost::gamma_distribution<> gd( shape );
  boost::variate_generator<boost::mt19937&,boost::gamma_distribution<> > var_gamma( rng, gd );

  return scale*var_gamma();
}
于 2010-05-20T15:35:22.260 に答える