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

问题描述 投票:6回答:2

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

现在这可能意味着在内部,存在计算负二项分布的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;
}
c++ random
2个回答
1
投票

该标准没有规定实现如何实现分发,除了从它的采样应该采用来自Generator的分摊的常数样本。

None of the members提供CDF或PDF


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

© www.soinside.com 2019 - 2024. All rights reserved.