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

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

Шаг 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);

Figure contains an axes. The axes contains an object of type histogram.

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

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

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

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

Figure contains an axes. The axes contains an object of type histogram.

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

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

| | |

Похожие темы