【问题标题】:Converting a Uniform distribution to Poisson distribution将均匀分布转换为泊松分布
【发布时间】:2013-09-17 21:39:40
【问题描述】:

我必须编写一个 C 程序来将随机数的均匀分布(比如从 0 到 1)转换为泊松分布。有人可以帮忙吗?

【问题讨论】:

  • 您是否仅限于单一统一,即反转,还是允许多个 U?你的措辞听起来像是你想要一个,但我所知道的泊松技术需要多个 U。

标签: c algorithm distribution probability poisson


【解决方案1】:

使用 GSL,即 Gnu 科学图书馆。有一个函数叫gsl_ran_poisson

这个函数从泊松分布中返回一个随机整数,平均值为 mu。 泊松变量的概率分布是, p(k) = {\mu^k \over k!} \exp(-\mu) 对于 k >= 0。

否则,看代码,复制思路。

【讨论】:

    【解决方案2】:

    我假设你想编写一个 C 程序,它可以从泊松分布中采样一个随机数,给定一个 U(0,1) 中的随机数。

    通常,这是通过从 U(0,1) 中获取数字的逆 CDF 来完成的。对于像泊松这样的离散分布,首先通过假设 CDF 函数在整数点之间是平滑的,将其转换为连续分布,然后我们应用适当的近似值(地板函数)。

    Numerical Recipes in C++(第 3 版)一书有完整的解释和 C++ 代码。第 7.3.12 节,第 372 页。

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 2019-05-27
      • 2010-09-09
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2014-11-22
      • 2012-07-04
      相关资源
      最近更新 更多