MatLab:Generate N 个伪随机数,服从平均 M 和总 T 的泊松分布,其中 N、M 和 T 是用户定义的

MatLab:Generate N pseudo-random numbers with a Poisson distribution having mean M and total T where N,M, and T are user defined

我希望能够在 MatLab 中生成一系列 N 伪随机数,泊松分布的均值为 M. N个数的和应该是TNMT 始终为正数或零,并且是用户指定的任何函数的参数.

显然,如果 T 相对于 N 较小,则可能会出现总 T 的问题。如果函数可以只是 return 值 T 然后 N-1 零或错误代码。但是,极有可能在大多数情况下T>>N

我一直在尝试基于 http://matlabtricks.com/post-44/generate-random-numbers-with-a-given-distribution 提供的具有给定分布的随机数生成方法的变体,并在每一步尝试各种标准化,但没有成功。

您可以尝试使用 multinomial distribution 来近似您想要的内容。

如果您使用维基百科符号,则 k=Nn=T 和 pi=M/T。泊松分布具有独特的 属性 均值等于方差,但如果您的参数使得 pi 很小,则意味着 npi 将非常接近方差 npi(1-pi)。总和将自动(通过 属性 的多项式)等于 T.

Matlab 中的多项式采样是使用 mnrmd function 完成的。

更新

Wrt评论,让我们考虑N个采样值vi,并写出它们的总和

求和(i=1...N) vi = T

让我们计算这个等式左边和右边的平均值。

总和(i=1...N) E(vi) = E(T) = T

右边常数的平均值本身就是常数。在左边我们有

Sum(i=1...N) E(vi) = Sum(i=1...N) M = N*M = T

因此,M=T/N和pi=M/T=1/N.