Генерация случайных чисел из кусочно-вероятностного распределения в Matlab - PullRequest
2 голосов
/ 10 апреля 2011

Я пытаюсь ввести следующую кусочную функцию в matlab как распределение вероятностей. Затем я пытаюсь сгенерировать случайные значения X. У меня есть набор инструментов статистики, чтобы я мог генерировать случайные числа, используя это, но я не могу понять, как ввести функцию, чтобы я мог фактически генерировать случайные числа. *

P(X)= Ax 0<=x<1
      A/2 1<=x<2
      0 otherwise

A - нормализационная константа.

В конечном итоге я хочу показать гистограмму из 10 000 испытаний из этого распределения и найти среднее и стандартное отклонение моего моделирования.

1 Ответ

2 голосов
/ 10 апреля 2011

выборок из заданного распределения могут быть сгенерированы, например, с использованием выборки с обратным преобразованием (см. http://en.wikipedia.org/wiki/Inverse_transform_sampling)). Это довольно просто, поскольку вы просто генерируете равномерно распределенные значения, а затем вычисляете значение, обратное к вашей интегральной функции распределения

Накопительный распредел. Функция может быть рассчитана путем интеграции функции плотности пригодности, в вашем случае

x ^ 2/2 ... x от <0,1>

x / 2 ... x из (1,2>

Обратите внимание, что нормализующая константа A = 1 теперь m-файл делает следующее:

function vals =genDist(len)
vals =  rand(len,1);
for i=1:length(vals)
    if vals(i)<=1/2 % vals(i) 0..0.5
        vals(i) = sqrt(2*vals(i));%inverse function of x^2/2 
    else % vals(i) 0.5-1
        vals(i) = vals(i)*2; %inverse function of x/2
    end
end

конец

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...