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;
}
该标准没有规定实现如何实现分发,除了从它的采样应该采用来自Generator的分摊的常数样本。
None of the members提供CDF或PDF
可能意味着在内部,存在计算负二项分布的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