我在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中做类似的事情?
答案 0 :(得分:8)
Poisson distribution仅针对整数定义。因此,您需要将RandomInteger与PoissonDistribution一起使用,如下所示:
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}
答案 1 :(得分:4)
阅读广泛的在线Mathematica文档,特别是关于PoissonDistribution
及其绘图示例的内容,它指向PDF
。这将允许您计算分布值。
请注意,根据我的个人经验,对于简单的发行版,只需插入发行版的公式并使用它而不是花哨的PDF
方法就会更快。泊松分布并不太复杂。
答案 2 :(得分: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}