Сгенерируйте случайные числа Используя инверсию равномерного распределения

Этот пример показывает, как сгенерировать случайные числа с помощью метода инверсии равномерного распределения. Это полезно для дистрибутивов, когда возможно вычислить обратную кумулятивную функцию распределения, но нет никакой поддержки выборки от распределения непосредственно.

Шаг 1. Сгенерируйте случайные числа от стандартного равномерного распределения.

Используйте rand, чтобы сгенерировать 1 000 случайных чисел от равномерного распределения на интервале (0,1).

rng('default')  % For reproducibility
u = rand(1000,1);

Метод инверсии полагается на принцип, что непрерывные кумулятивные функции распределения (cdfs) располагаются однородно на открытом интервале (0,1). Если u универсальное случайное число на (0,1), затем x=F-1(u) генерирует случайное число x от любого непрерывного распределения с заданным cdf F.

Шаг 2. Сгенерируйте случайные числа от распределения Weibull.

Используйте обратную кумулятивную функцию распределения, чтобы сгенерировать случайные числа от распределения Weibull с параметрами A = 1 и B = 1, которые соответствуют вероятностям в u. Постройте график результатов.

x = wblinv(u,1,1);
histogram(x,20);

Гистограмма показывает, что случайные числа сгенерировали использование инверсии Weibull cdf, функциональный wblinv имеют распределение Weibull.

Шаг 3. Сгенерируйте случайные числа от стандартного нормального распределения.

Те же значения в u могут сгенерировать случайные числа от любого распределения, например, нормальный стандарт, следующим та же процедура с помощью инверсии cdf желаемого распределения.

figure
x_norm = norminv(u,1,1);
histogram(x_norm,20)

Гистограмма показывает, что, при помощи стандартной нормальной инверсии cdf norminv, случайные числа, сгенерированные от u теперь, имеют стандартное нормальное распределение.

Смотрите также

| | |

Похожие темы