一様分布の逆関数を使用した乱数の生成
この例は、一様分布の逆関数法を使用して乱数を生成する方法を示しています。この方法は、逆累積分布関数の計算が可能な場合の分布に役立ちますが、分布からの直接のサンプリングはサポートされていません。
手順 1. 標準一様分布から乱数を生成する。
rand
を使用して、区間 (0,1) で一様分布から 1000 の乱数を生成します。
rng('default')% For reproducibilityu = rand(1000,1);
逆関数法は、連続累積分布関数 (cdf) は開区間 (0,1) 全体にまたがって一意に分布するという原則に依存しています。
が (0,1) の一様な乱数である場合、
は、指定された累積分布関数F
による任意の連続分布から乱数
を生成します。
手順 2.ワイブル分布から乱数を生成する。
逆累積分布関数を使用して、u
の確率に対応するパラメーターA = 1
およびB = 1
をもつワイブル分布から乱数を生成します。結果をプロットします。
x = wblinv(u,1,1); histogram(x,20);
ヒストグラムから、ワイブル逆累積分布関数wblinv
を使用して生成された乱数がワイブル分布となることがわかります。
手順 3. 標準正規分布から乱数を生成する。
u
を同じ値にして、望ましい分布の逆累積分布関数を使用して同じ手順に従うと、標準正規分布などの任意の分布から乱数を生成できます。
figure x_norm = norminv(u,1,1); histogram(x_norm,20)
ヒストグラムから、標準正規逆累積分布関数norminv
を使用すると、u
から生成された乱数が標準正規分布となることがわかります。