В этом примере показано, как сгенерировать случайные числа с помощью метода инверсии равномерного распределения. Это полезно для распределений, когда возможно вычислить обратную кумулятивную функцию распределения, но нет никакой поддержки выборки от распределения непосредственно.
Используйте rand
сгенерировать 1 000 случайных чисел от равномерного распределения на интервале (0,1).
rng('default') % For reproducibility u = rand(1000,1);
Метод инверсии использует принцип, что непрерывные кумулятивные функции распределения (cdfs) располагаются однородно на открытом интервале (0,1). Если универсальное случайное число на (0,1), затем генерирует случайное число от любого непрерывного распределения с заданным cdf F
.
Используйте обратную кумулятивную функцию распределения, чтобы сгенерировать случайные числа от распределения Weibull параметрами A = 1
и B = 1
это соответствует вероятностям в u
Постройте график результатов.
x = wblinv(u,1,1); histogram(x,20);
Гистограмма показывает, что случайные числа сгенерировали использование инверсии Weibull cdf функциональный wblinv
имейте распределение Weibull.
Те же значения в u
может сгенерировать случайные числа от любого распределения, например, нормальный стандарт, следующим та же процедура с помощью инверсии cdf желаемого распределения.
figure x_norm = norminv(u,1,1); histogram(x_norm,20)
Гистограмма показывает что, при помощи стандартной нормальной инверсии cdf norminv
, случайные числа сгенерированы от u
теперь имейте стандартное нормальное распределение.
hist
| norminv
| rand
| wblinv