[英]Random variable from pdf in matlab
我想模拟一些作为方差Gamma分布的随机变量。
我知道pdf( http://en.wikipedia.org/wiki/Variance-gamma_distribution ),但我不知道累积函数F的反函数:因此,我无法生成随机的统一变量U并计算x=F^(-1)(U).
我必须在MATLAB中执行此操作。
谢谢!
斯特凡诺
接下来要考虑的另一种自然选择是冯·诺伊曼(Von Neumann)的“拒绝接受方法”。
如果您发现在与f
相同的空间上定义的密度g
,从而
g
生成样本,以及 那你就好了
如果您搜索文献,人们一定已经做到了。 VG在定价选项中广泛使用。
遵循@Drake的想法:第一步,可以从此处使用Marsaglia和Tsang的Method。
这是生成伽玛随机数的代码:
function x=gamrand(alpha,lambda)
% Gamma(alpha,lambda) generator using Marsaglia and Tsang method
% Algorithm 4.33
if alpha>1
d=alpha-1/3; c=1/sqrt(9*d); flag=1;
while flag
Z=randn;
if Z>-1/c
V=(1+c*Z)^3; U=rand;
flag=log(U)>(0.5*Z^2+d-d*V+d*log(V));
end
end
x=d*V/lambda;
else
x=gamrand(alpha+1,lambda);
x=x*rand^(1/alpha);
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.