Как видно из приведенного ниже кода, в настоящее время я генерирую случайные числа из нормального распределения и выбираю числа в интервале -3*сигма и 3*сигма.
Однако теперь я хочу генерировать числа так, чтобы существовало более высокая вероятность того, что я выбираю числа за пределами интервала -3 * сигма и 3 * сигма. Например. число из [-4*сигма -3*сигма) должно иметь 35%-ную вероятность быть выбранным и то же самое для [3*сигма 4*сигма].
В принципе, я буду вызывать эту функцию несколько раз и мне интересно, есть ли способ выбрать более высокую долю случайных чисел из «хвостов» нормального распределения, фактически не изменяя форму нормального распределения.
Мне сказали используйте для этой проблемы «алгоритм выборки отклонения» или «алгоритм Метрополиса-Гастингса». Я изо всех сил пытаюсь понять, как реализовать либо. Может ли кто-нибудь дать небольшой толчок в правильном направлении? я использую
N = pdf('Normal',136e9-(3*9.067e9):1e8:136e9+(3*9.067e9),136e9,9.067e9)
чтобы сначала сгенерировать pdf
для рисования. Однако тогда я не уверен, что мне следует выбрать в качестве моего «целевого дистрибутива», а какой — в качестве «предлагаемого дистрибутива».
function [new_E11, new_E22] = elasticmodulusrng()
new_E11 = normrnd(136e9,9.067e9,[1 1]);
new_E22 = normrnd(8.9e9,2.373e9,[1 1]);
while new_E11<=-3*9.067e9 && new_E11>=3*9.067e9
new_E11 = normrnd(136e9,9.067e9,[1 1]);
end
while new_E11<=-3*2.373e9 && new_E11>=3*2.373e9
new_E22 = normrnd(8.9e9,2.373e9,[1 1]);
end
Спасибо