正規分布に従った単一の乱数が欲しい

概要

正規分布に従った単一の乱数が欲しいときに必要な技術についてまとめたページです.random関数などから生成された一様乱数を正規分布に従った乱数に変換します.
Facebookシェア Twitterツイート LINEで送る このエントリーをはてなブックマークに追加
この章を学ぶ前に必要な知識
0
条件
  • 別に生成された一様乱数が必要
効果
  • 正規分布に従う乱数を生成
ポイント
  • Box-Muller法(ボックス=ミュラー法)が有名

解 説

正規分布に従った値を一様擬似乱数が与えられた時にもとめる方法について書きます.
正規分布に従った単一の乱数が欲しい
正規分布を生成する有名な手法はBox-Muller法と呼ばれます. この技術は一様な乱数(正規分布ではなくどの値も均等に出る)から正規分布を生成する手法です.このとき二つの一様乱数を入力に二つの正規分布に従う乱数を生成します.詳しくは様々なサイトで解説がありますのでそちらを参照ください.
Box-Muller法について
C++
1
2
3
4
5
6
7
8
9
10
#include <math.h>
//M_PIを使用するために上記ヘッダーが必要
 
double rand_normal(){
    return sqrt( - 2.0 * log( rand() ) ) * cos( 2.0 * M_PI * rand() );
 }
 
double rand_normal_mu_sigma(double mu, double sigma){
    return mu + sigma * rand_normal();
}
平均0分散1の正規分布から生成される乱数を返す関数 平均μ分散σの正規分布から生成される乱数を返す関数
この章を学んで新たに学べる
Comments

Reasons
>>隠す