Main Content

一様分布の逆関数を使用した乱数の生成

この例は、一様分布の逆関数法を使用して乱数を生成する方法を示しています。この方法は、逆累積分布関数の計算が可能な場合の分布に役立ちますが、分布からの直接のサンプリングはサポートされていません。

手順 1. 標準一様分布から乱数を生成する。

rand を使用して、区間 (0,1) で一様分布から 1000 の乱数を生成します。

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

逆関数法は、連続累積分布関数 (cdf) は開区間 (0,1) 全体にまたがって一意に分布するという原則に依存しています。u が (0,1) の一様な乱数である場合、x=F-1(u) は、指定された累積分布関数 F による任意の連続分布から乱数 x を生成します。

手順 2. ワイブル分布から乱数を生成する。

逆累積分布関数を使用して、u の確率に対応するパラメーター A = 1 および B = 1 をもつワイブル分布から乱数を生成します。結果をプロットします。

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

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

ヒストグラムから、ワイブル逆累積分布関数 wblinv を使用して生成された乱数がワイブル分布となることがわかります。

手順 3. 標準正規分布から乱数を生成する。

u を同じ値にして、望ましい分布の逆累積分布関数を使用して同じ手順に従うと、標準正規分布などの任意の分布から乱数を生成できます。

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

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

ヒストグラムから、標準正規逆累積分布関数 norminv を使用すると、u から生成された乱数が標準正規分布となることがわかります。

参考

| | |

関連するトピック