【问题标题】:Gamma Distribution in BoostBoost 中的 Gamma 分布
【发布时间】:2010-03-26 20:21:04
【问题描述】:

我正在尝试使用来自 boost::math 的 Gamma 分布,但似乎无法将它与 boost::variate_generator 一起使用。有人可以证实吗?或者有什么方法可以使用。

我发现有一个未记录的 boost::gamma_distribution 可能也可以使用,但它只允许从分布中选择 alpha 参数而不是 beta。

谢谢!

【问题讨论】:

    标签: c++ boost random gamma-distribution


    【解决方案1】:

    this link 中所述,您只需将 rng 的输出乘以所需的比例,即可扩展 Boost(或 TR1)的单参数伽马分布。

    以下是使用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();
    }
    

    【讨论】:

    • 这很好,你也可以从中得到逆伽玛
    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 2019-06-04
    • 1970-01-01
    • 2020-07-10
    • 2021-03-11
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多