確率統計確率統計

正規分布サンプリング; ガウス分布サンプリング; Normal Distribution Sampling; Gaussian Distribution Sampling

概要
正規分布とは以下の式で表現される確率分布。最も代表的な確率分布で、分散をもつ確率分布に従う確率変数の総和は、中心極限定理によりこの正規分布に収束していく。

$$f(x)=\frac{1}{\sqrt{2 \pi \sigma^2}} exp \left(-\frac{(x-\mu)^2}{2 \sigma^2} \right) $$
正規分布

この正規分布のサンプリングにはミュラーボックス法[1]が用いられる。


ソースコード

namespace ExRandom.Continuous {
    public class NormalRandom : Random{
        readonly MT19937 mt;
        readonly double sigma, mu;

        double r;
        bool is_pear_generate = false;

        public NormalRandom(MT19937 mt, double sigma = 1, double mu = 0) {
            if(mt == null) {
                throw new ArgumentNullException();
            }

            this.mt = mt;
            this.sigma = sigma;
            this.mu = mu;
        }

        private double Generate() {
            if(is_pear_generate) {
                is_pear_generate = false;

                return r;
            }
            else {
                double z1, z2, sq_log_z1, pi_z2;
                
                is_pear_generate = true;

                z1 = mt.NextDouble_OpenInterval0();
                z2 = mt.NextDouble_OpenInterval0();
                sq_log_z1 = Math.Sqrt(-2.0 * Math.Log(z1));
                pi_z2 = 2.0 * Math.PI * z2;
                
                r = sq_log_z1 * Math.Sin(pi_z2);
                return sq_log_z1 * Math.Cos(pi_z2);
            }
        }

        public override double Next() {
            return Generate() * sigma + mu;
        }
    }
}

関連項目
メルセンヌ・ツイスタ
各種確率分布サンプリング基本クラス


引用文献
[1] “A note on the generation of random normal deviates”, George E.P. Box, Mervin E. Muller, The Annals of Mathematical Statistics, vol.29, no.2, pp.610-611, 1958

ライブラリライブラリ
確率統計確率統計
線形代数線形代数
幾何学幾何学
最適化最適化
微分方程式微分方程式
画像処理画像処理
補間補間
機械学習機械学習
クラスタリングクラスタリング
パズルゲーム・パズル
未分類未分類