Я пытаюсь пробовать 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
Возможно, это ошибка? Первая строка должна быть «X = rand (1,1000);»? – mpaskov
@mpaskov Я думаю, что сработало! Спасибо огромное! –
Как я упоминал ранее, максимальное значение 'f' достигается при 2 и равно 4/3. Если вы установили 'c' на 4/3, ваша выборка была бы более эффективной. –