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

时间:2019-03-07 08:42:34

标签: matlab random poisson

我希望能够在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提供的具有给定分布的随机数生成方法的变体,并尝试在每个步骤进行各种归一化,但是都没有成功。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用multinomial distribution来估算所需的值。

如果使用维基百科符号,则'Close'k=N和p i = M / T。泊松分布具有均值等于方差的独特属性,但是如果您的参数使得p i 很小,则均值np i 将非常接近方差np i (1-p i )。 (根据多项式的性质)总和将自动等于T。

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

更新

Wrt注释,让我们考虑n=T个采样值v i ,并写出它们的总和

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

让我们计算该方程式左侧和右侧的平均值。

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

在右侧,常量的平均值本身就是常量。在左侧

总和(i = 1 ... N)E(v i )=总和(i = 1 ... N)M = N * M = T

因此,M = T / N和p i = M / T = 1 / N。