如何在 C++ 中将函数值更改为 table(伽马分布)中的值?

How to change the Function value to the one from the table (Gamma Distribution) in C++?

我的任务是使用 C++ 编写一个程序来计算使用 Gamma 分布的概率。如果我已经找到函数值,如何将其更改为 Gamma 分布 table 中的值?我不知道公式。

例如Fg(8;8),在table中是0.5470。 table 中的 Fg(4;8) 为 0.0511.

Standard Gamma Cumulative Table

从头开始用 "pure" C++ 编写这样的函数并不像 AFAIK C++ 标准库那样容易 (Common mathematical functions & Mathematical special functions) does not support the incomplete Gamma function which is required to compute Gamma distribution cumulative function.

相反,我建议使用 Boost library's implementation

// -*- compile-command: "g++ gamma.cpp; ./a.out"; -*-
//
#include <boost/math/distributions/gamma.hpp>
#include <iostream>

using namespace boost::math;

int main()
{
  gamma_distribution<> dist(8.,1);

  std::cout << "\n" << cdf(dist,8);
  std::cout << "\n" << cdf(dist,4);
}

打印:

0.547039
0.0511336

符合预期