试图了解用于生成泊松随机变量的逆变换方法

时间:2019-03-29 23:42:04

标签: r algorithm statistics simulation distribution

Wikipedia给出的使用逆变换方法生成泊松分布的随机变量的算法为:

init:
     Let x ← 0, p ← e^−λ, s ← p.
     Generate uniform random number u in [0,1].
while u > s do:
     x ← x + 1.
     p ← p * λ / x.
     s ← s + p.
return x.

我在R中实现了它:

f<-function(lambda)
{
x<-0
p<-exp(-lambda)
s<-p    
u<-runif(1)    
while (u>s )
{
   x<-x+1    
   p<-p*lambda/x    
   s<-s+p
}    
return(x)
}

但是我不明白这是如何生成此随机变量的值的,并且我还认为代码不完整,因为输出始终为1

有人可以解释吗?

0 个答案:

没有答案