回 帖 发 新 帖 刷新版面

主题:关于MATLAB中服从泊松分布的随机数的生成

用MATLAB生成P=6.6*10^-8  N=400 的服从泊松分布的随机数,我用POISSRND生成了1000个随机数可全都是0,请高手帮帮忙,怎样才能生成服从该分布的不全为0的随机数?

回复列表 (共4个回复)

沙发

POISSRND Random arrays from the Poisson distribution.
    R = POISSRND(LAMBDA) returns an array of random numbers chosen from the
    Poisson distribution with parameter LAMBDA.  The size of R is the size
    of LAMBDA.
 
    R = POISSRND(LAMBDA,M,N,...) or R = POISSRND(LAMBDA,[M,N,...]) returns
    an M-by-N-by-... array.

你可以使用第二种调用格式,比如
poissrnd(5,1,1000);
得出的数并不是0,下面是部分:
Columns 1 through 13

     6     5     3     6     4     3     8     2    10     8     6     5     6

  Columns 14 through 26

     7     9     6     4     9     4     8     4     3     6     3     4     4

  Columns 27 through 39

     5     5     7     4     7     4     3     3     2    12     5     4     4

板凳

产生的值取决于lambda的大小。lambda=p*N为poiss分布的平均数和方差。

3 楼


我的LAMDA=6.6*10^-8*400 怎么变换才能生成大于0的服从泊松分布的随机数,谢谢了

4 楼

普松分布指的是在一个1非常少(其中出现1的概率接近于0)的(0,1)总体中以很大的样本容量(n)抽样所得到的总和数的分布。你的总体出现 1 的概率p=6.6e-8非常小,只抽400个元素,这个样本的总和数当然仍然可能是0,若增大样本容量,比如说100M,则这个样本中总会出现非0元素,其总和数就可能为0,1,2,3,...,他们的概率分布符合普松分布即poissrnd(n*p)。

我来回复

您尚未登录,请登录后再回复。点此登录或注册