2

我正在寻找 Mathematica 中以下 Matlab 函数的等价物:

“R = poissrnd(lambda) 从平均参数 lambda 的泊松分布生成随机数。lambda 可以是向量、矩阵或多维数组。R 的大小是 lambda 的大小。”

下面的函数输出示例。

b = 95.7165   95.7165   95.7165   95.7165   95.7165   98.9772   98.9772   98.9772   98.9772    0.3876

poissrnd(b)

ans =100   115     81    90   109   106   104    87   104     2

我怎么能在 Mathematica 8 中做类似的事情?

4

3 回答 3

9

泊松分布仅针对整数定义。因此,您需要像这样将RandomIntegerPoissonDistribution一起使用:

poissrnd[lambda_]:=RandomInteger[PoissonDistribution[lambda]]

用法:

b = {95.7165, 95.7165, 95.7165, 95.7165, 95.7165, 98.9772, 98.9772, 
  98.9772, 98.9772, 0.3876};

poissrnd /@ b

Out[1] = {104, 97, 67, 84, 96, 123, 93, 96, 100, 0}
于 2011-10-12T14:02:38.480 回答
4

通过阅读大量的在线 Mathematica 文档,尤其是关于PoissonDistribution它的绘图示例,它会将您指向PDF. 这将允许您计算分布值。

请注意,根据我的个人经验,对于简单的分布,只需插入分布的公式并使用它而不是花哨的PDF方法会更快。泊松分布并不太复杂。

于 2011-10-12T14:02:36.180 回答
3

或者,您可以使用

In[2]:= lambda = {1.0, 2.05, 11.04}

Out[2]= {1., 2.05, 11.04}

In[3]:= Map[RandomVariate[PoissonDistribution[#]] &, lambda]

Out[3]= {0, 3, 11}
于 2011-10-12T14:22:24.963 回答