ぎるばーとの日記

もっともっと遠くへ行きたい 空が広く見える場所まで

コーシー乱数

 連日の更新なんていつぶり……?

 コーシー分布について。ちなみにコーシーと孔子は別人です。(豆知識
 コーシー分布は自由度1のt分布、平均も分散も発散するたちが悪い分布として名を知られてますね。
 和に対して安定(和の分布もコーシー分布)なのは正規分布と同じです。が、正規分布はスケールの二乗(分散)が加法的で、コーシー分布はスケールが加法的になります。

 分散1の独立な正規乱数の和は分散2の正規乱数になって、スケール(標準偏差)で見ると√2倍。さらに標本平均の分散は、
\text{Var}(\bar X) = \text{Var}(\frac{\sum X_i}{n}) = \frac{1}{n^2}\text{Var}(\sum X_i) = \frac{n\sigma^2}{n^2} = \frac{\sigma^2}{n}
 標本サイズが大きくなることで標本平均の分散が小さくなり、母平均の推定の信頼性が高まるのでした。

 片や、スケール1の独立なコーシー乱数の和はスケール2のコーシー乱数になります。n個の和をとって、スケールnのコーシー乱数。nで割るとスケール1のコーシー乱数。と、標本平均で元の分布に戻ってしまいました。母確率分布がコーシー分布のとき、標本サイズを大きくしても母中心の推定の信頼性は高まりません。

Cauchy distribution - Wikipedia
 コーシー乱数の生成には、逆関数法とか標準正規乱数の比をとるとかいろいろ見つかりますが、ここでは数学関数を使わない方法を、、

double randomCauchy() {
    double u, v;
    do {
        u = 2.0 * Math.random() - 1.0;
        v = Math.random();
    } while (u * u + v * v >= 1.0 || v == 0.0);
    
    return u / v;
}

 単位円内(上半分)からランダムに選んだ点で、X座標をY座標で割るとコーシー分布(0,1)の乱数が得られます。説明は割愛、Box–Mullerとかで検索するといいんじゃないかな……。