【发布时间】:2013-09-17 21:39:40
【问题描述】:
我必须编写一个 C 程序来将随机数的均匀分布(比如从 0 到 1)转换为泊松分布。有人可以帮忙吗?
【问题讨论】:
-
您是否仅限于单一统一,即反转,还是允许多个 U?你的措辞听起来像是你想要一个,但我所知道的泊松技术需要多个 U。
标签: c algorithm distribution probability poisson
我必须编写一个 C 程序来将随机数的均匀分布(比如从 0 到 1)转换为泊松分布。有人可以帮忙吗?
【问题讨论】:
标签: c algorithm distribution probability poisson
使用 GSL,即 Gnu 科学图书馆。有一个函数叫gsl_ran_poisson:
这个函数从泊松分布中返回一个随机整数,平均值为 mu。 泊松变量的概率分布是, p(k) = {\mu^k \over k!} \exp(-\mu) 对于 k >= 0。
否则,看代码,复制思路。
【讨论】:
我假设你想编写一个 C 程序,它可以从泊松分布中采样一个随机数,给定一个 U(0,1) 中的随机数。
通常,这是通过从 U(0,1) 中获取数字的逆 CDF 来完成的。对于像泊松这样的离散分布,首先通过假设 CDF 函数在整数点之间是平滑的,将其转换为连续分布,然后我们应用适当的近似值(地板函数)。
Numerical Recipes in C++(第 3 版)一书有完整的解释和 C++ 代码。第 7.3.12 节,第 372 页。
【讨论】: