2016-11-29 86 views
0

我试图从使用拒绝方法的概率密度函数f(x)=(1/3)x^2,-1 < x < 2的分布中采样1000个数字。我也想绘制一个基于数据的直方图。使用拒绝方法进行采样

我的教科书给出了使用拒收方法的以下规则:
1.找出a≤b≤c的数a,b和c,使0≤f(x)≤c。边界框 沿着x轴从a延伸到b并沿着y轴从0延伸到c。
2.从随机数发生器 或随机数表中获取标准的统一随机变量U和V.
3.定义X = a +(b-a)U和Y = cV。那么X具有Uniform(a,b)分布,Y是 Uniform(0,c),并且点(X,Y)在边界框中是均匀分布的。

基于这些规则,我写了下面的代码,但我相信我是一个妥善的解决办法真的不远了,并且可以使用一些指导

a=-1; b=2; c=2; 

while p < 1000 

    U = rand; V = rand; 

    X = a+U*(b-a); Y = c*V; f = (1/3)*X^2; 

    if Y<=f 
     x(p)=X; 
     p = p+1; 
    end 

end 

histogram(x); 

回答

0

到底在哪p定义?应该被设置为0

WRT算法,它看起来不错,除了它可能会更高效 - f(x)X=2达到最大值,所以你可以设置c到4/3。

相关问题