📄 poisson.m
字号:
function x = poisson(lambda)
%
% Generate a sample of a random variable x with mean lambda
% (Following Numerical Recipes in C, 2nd ed., p. 294)
% This function should be initialized by initpoisson.m
%
% function x = poisson(lambda)
%
% lambda = Poisson mean
%
% x = Poisson random variable
% Copyright 1999 by Todd K. Moon
global sq alxm g oldm;
if(lambda<12)
if(lambda ~= oldm)
oldm = lambda;
g = exp(-lambda);
end
em = -1;
t = 1;
while(1)
em = em+1;
t = t*rand;
if(t <= g) break; end;
end
else
if(lambda ~= oldm)
oldm = lambda;
sq = sqrt(2*lambda);
alxm = log(lambda);
g = lambda*alxm - gammaln(lambda+1);
end
while(1)
while(1)
y = tan(pi*rand);
em = sq*y+lambda;
if(em >= 0) break; end
end
em = floor(em);
t = 0.9*(1 + y^2)*exp(em*alxm - gammaln(em+1) - g);
if(t >= rand) break; end
end
end
x = em;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -