いろいろの有用な乱数発生の方法

一様乱数をもとに


 確率・統計の理論(確率積分変換)によると、一様乱数(0 〜 1 の間で平均的に一様に出現する変数)から、原則的にはどんな確率分布(ただし連続分布)にしたがう乱数でも生成できます(正規分布などはコマンドが存在するので、以下は正規分布(など)以外の乱数と考えて下さい)。

 ほんの一例をとると、機械の寿命の分布、医療における治療予後の生存期間分布などを扱いたいとします。これらに対しては、指数分布、ガンマ分布、ワイブル分布などがよくフィットします。そこで、これらのモデルを実験したり検証する方法の一つは各分布に従う乱数を利用することとなります。

 一様分布から簡単な方法でこれら乱数を得ることができます。エクセルによるなら、次の手続きによって下さい。

  1. 分布の特定 ○○分布の累積分布関数(密度関数でなく)がエクセルにあることを確かめます。また、上側確率でもかまいません。以上を下にリストしておきます(なお、密度関数と累積分布関数の関係は基本的なものですが、難しいことではないので確認しておいて下さい)。
  2. 逆関数の確認 ○○分布の逆関数△△を求める。実際には△△がエクセルにあることを確かめます。△△はエクセルでは多くの場合 INV(逆関数の意味)という文字が付いていますが、これらも下にリストしておきます。なお、派生するものはもとから導出します(指数分布、ワイブル分布など)。
  3. 一様乱数の代入 △△はいくつかの引数を含んでおり、多くの場合「確率」を引数として要求してきますので、あらかじめ出してある一様乱数を入れて計算します。出た結果が求める乱数です。ここで、わかるように、用いるのは逆関数△△の方です。
分布名 累積分布関数(○○) 同逆関数(△△)
標準正規 NORMSDIST NORMSINV
指数 EXPONDIST (*)
ガンマ GAMMADIST GAMMAINV
ベータ BETADIST BETAINV
対数正規 LOGNORMDIST LOGINV
ワイブル WEIBUL (**)
カイ 2 乗 CHIDIST CHIINV
t TDIST TINV
F FDIST FINV

*) ガンマ分布の特別なケースだから、GAMMAINV でよい。あるいは式
   - LOG(U)/ λ (U は一様乱数)
を用いても生成できる。

**) エクセルは用意していないが、指数乱数から生成できる。X を λ=1 の指数乱数とすると、この p 乗根をもとに
   k × X ^ (1/p)
とすれば、これはワイブル分布にしたがう。

 

例:制作中


 一様乱数の発生法