如何在C ++中计算(负二项式)分布PDF和CDF?

时间:2019-03-25 08:23:13

标签: c++ random

STD具有许多分布,显然可以用于生成伪随机变量,请参见例如。下面的代码生成并输出一些负二项式分布数。

现在,此 might 意味着在内部,有代码计算负二项式分布的CDF和/或PDF,即随机变量具有某个值(例如, 6.有没有办法输出这种可能性?如果是,怎么办?我知道我可以为此运行我自己的代码,但是如果有某种方法可以从std获取概率,我宁愿不这样做。

如果可能,请问其他发行版的相同问题,例如伽玛分布的CDF。

int main()
{
   std::negative_binomial_distribution<int> negBin{ 5,0.5 };//Negative binomial distribution
   std::mt19937 RNG(260783);//Random generator
   for (size_t i = 0; i < 4; i++)
   {
        std::cout << negBin(RNG) << std::endl;
   }
   return 0;
}

2 个答案:

答案 0 :(得分:1)

该标准未指定实现应如何实现分布,只是从该采样中应从生成器中获取摊余常数样本。

None of the members提供CDF或PDF

答案 1 :(得分:0)

  

可能意味着在内部,有代码计算负二项式分布的CDF和/或PDF,即随机变量具有某个值(例如, 6.有没有办法输出这种可能性?

通常,不,采样不需要了解PDF和/或CDF,请参见f.e. Marsaglia方法对正态分布的RV进行采样。

我可以建议看一下GNU科学图书馆,该图书馆提供了抽样方法以及负二项式的PDF和CDF: https://www.gnu.org/software/gsl/manual/html_node/The-Negative-Binomial-Distribution.html