来自matlab中pdf的随机变量

时间:2014-04-04 11:01:54

标签: matlab

我想模拟一些分布为方差伽玛的随机变量。

我知道pdf(http://en.wikipedia.org/wiki/Variance-gamma_distribution),但我不知道累积函数F的倒数:所以我无法生成随机统一变量U并计算x=F^(-1)(U). 我必须在MATLAB中这样做。

谢谢!

斯特凡诺

2 个答案:

答案 0 :(得分:0)

接下来要考虑的另一个自然选择是Von Neumann"验收拒绝方法"。

如果您能找到与g相同的空间定义的密度f

  1. 您知道如何从g
  2. 生成样本
  3. f(x)< = cg(x),对于某些c,对于所有x,
  4. 那么你很高兴。

    如果您搜索文献,必须这样做。 VG广泛用于定价选项。

答案 1 :(得分:-1)

遵循@Drake的想法:第一步,你可以使用来自here的Marsaglia和Tsang的方法。

这是生成gamma随机数的代码:

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