MatLab:生成具有均值M和总T的泊松分布的N个伪随机数,其中N,M和T是用户定义的

问题描述 投票:0回答:1

我希望能够在MatLab中生成一系列N个伪随机数,其泊松分布具有平均值M.N数的总和应该是T.N,M和T总是正或零并且会是任何函数的用户指定参数。

显然,如果T相对于N较小,则可能存在实现总共T的问题。在这种情况下,该函数可以仅返回值T,然后返回N-1个零或错误代码。但是,很可能在大多数情况下T >> N.

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

matlab random poisson
1个回答
1
投票

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

如果你使用维基百科表示法,那么k=Nn=T和pi = M / T.泊松分布具有均值等于方差的特性,但如果你的参数是pi小的那么,那么平均npi将非常接近方差npi(1-pi)。总和将自动(通过多项式的属性)等于T.

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

UPDATE

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

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

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

Am(u = 1 ... H)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.

© www.soinside.com 2019 - 2024. All rights reserved.