我试图从具有给定密度的分布中采样1000个数,其中f(x)=(1/3)* X ^ 2在-1之间。 x< 2.到目前为止,我有这个,但是根据直方图,这显然是错误的,但我认为我正朝着正确的方向前进。任何有关如何解决这个问题的帮助将不胜感激。
X=rand(0,1000); Y=rand(1,10000);
a=-1;
b=2;
c=2;
f = (1/3).*X.^2;
for i = 1:length(X)
while(Y(i) > f )
U = rand; V = rand;
X(i) = a+(b-a)*U;
Y(i) = c*V;
end
end
hist(X);
X
答案 0 :(得分:-1)
从任意分布中抽取样本实际上非常简单。您只需做两件事:1)找到CDF(通过集成PDF),2)找到CDF的逆。然后,您只需从均匀分布中绘制样本(使用rand())并将该值映射到CDF的反转。在你的情况下,你得到
y = rand(1e6,1); x = nthroot((9 * c - 1),3); hist(x,1000)