【发布时间】:2019-03-25 08:23:13
【问题描述】:
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;
}
【问题讨论】:
-
您可以使用 pmf 的公式找到标准分布的概率。有关负二项式,请参阅 this wiki page。并且,请参阅Inverse transform sampling 了解如何根据给定分布生成样本。我不知道 std random 使用的是哪种方法。