Skip to content

正規分布 ​

正規分布(std::normal_distribution<RealType>) ​

std::normal_distribution<RealType>は浮動小数点数型の乱数xを以下の確率密度関数に従って分布する。

(x|μ,σ)=1σ2π⋅exp⁡(−(x−μ)22σ2) .

分布パラメーターのうちのμとσは、それぞれ分布の平均(mean)、標準偏差(standard deviation)とも呼ばれている。

変数の宣言:

c++
std::normal_distribution<RealType> d( mean, stddev ) ;

RealTypeは浮動小数点数型でデフォルトはdouble。mean, stddevは浮動小数点数型。meanは平均。stddevは標準偏差で値の範囲は0<stddev。

使い方:

cpp
int main()
{
    std::mt19937 e ;
    std::normal_distribution d( 0.0, 1.0 ) ;
    d.mean() ; // 0.0
    d.stddev() ; // 1.0

    for ( int i = 0 ; i != 10 ; ++i )
    {
        std::cout << d(e) << ", "sv ;
    }  
}

対数正規分布(std::lognormal_distribution<RealType>) ​

std::lognormal_distribution<RealType>は浮動小数点数の乱数x>0を以下の確率密度関数に従って分布する。

p(x|m,s)=1sx2π⋅exp⁡(−(ln⁡x−m)22s2) .

変数の宣言:

c++
std::lognormal_distribution<RealType> d( m, s ) ;

RealTypeは浮動小数点数型でデフォルトはdouble。m, sはRealType型。値の範囲は0<s。

使い方:

cpp
int main()
{
    std::mt19937 e ;
    std::lognormal_distribution d( 0.0, 1.0 ) ;
    d.m() ; // 0.0
    d.s() ; // 1.0

    for ( int i = 0 ; i != 10 ; ++i )
    {
        std::cout << d(e) << ", "sv ;
    }  
}

カイ二乗分布(std::chi_squared_distribution<RealType>) ​

std::chi_squared_distribution<RealType>は浮動小数点数型の乱数x>0を以下の確率密度関数に従って分布する。

p(x|n)=x(n/2)−1⋅e−x/2Γ(n/2)⋅2n/2 .

変数の宣言:

c++
std::chi_squared_distribution<RealType> d( n ) ;

RealTypeは浮動小数点数型でデフォルトはdouble。nはRealType型。値の範囲は0<n。

使い方:

cpp
int main()
{
    std::mt19937 e ;
    std::chi_squared_distribution d( 1.0 ) ;
    d.n() ; // 1.0

    for ( int i = 0 ; i != 10 ; ++i )
    {
        std::cout << d(e) << ", "sv ;
    }  
}

コーシー分布(std::cauchy_distribution<RealType>) ​

std::cauchy_distribution<RealType>は浮動小数点数型の乱数xを以下の確率密度関数に従って分布する。

p(x|a,b)=(πb(1+(x−ab)2))−1 .

変数の宣言:

c++
std::cauchy_distribution<RealType> d( a, b ) ;

RealTypeは浮動小数点数型でデフォルトはdouble。a, bはRealType型。値の範囲は0<b。

使い方:

cpp
int main()
{
    std::mt19937 e ;
    std::chi_squared_distribution d( 0.0, 1.0 ) ;
    d.a() ; // 0.0
    d.b() ; // 1.0

    for ( int i = 0 ; i != 10 ; ++i )
    {
        std::cout << d(e) << ", "sv ;
    }  
}

フィッシャーのF分布(std::fisher_f_distribution<RealType>) ​

フィッシャーのF分布(Fisher's F-distribution)の名前は数学者サー・ロナルド・エイルマー・フィッシャー(Sir Ronald Aylmer Fisher)に由来する。

std::fisher_f_distribution<RealType>は浮動小数点数の乱数x>0を以下の関数密度関数に従って分布する。

p(x|m,n)=Γ((m+n)/2)Γ(m/2)Γ(n/2)⋅(mn)m/2⋅x(m/2)−1⋅(1+mxn)−(m+n)/2 .

変数の宣言:

c++
std::fisher_f_distribution<RealType> d( m, n ) ;

RealTypeは浮動小数点数型でデフォルトはdobule。m, nはRealType型。値の範囲は0<m かつ 0<n。

使い方:

cpp
int main()
{
    std::fisher_f_distribution d( 1.0 ) ;
    d.n() ; // 1.0

    std::mt19937 e ;
    d(e) ;
}

スチューデントのt分布(std::student_t_distribution<RealType>) ​

スチューデントのt分布(Student's t-distribution)はウィリアム・シーリー・ゴセット(William Sealy Gosset)によって考案された。当時、ウィリアムはギネス醸造所で働いていたが、ギネスは従業員に科学論文を発表することを禁じていたために、ウィリアムはスチューデントという偽名で発表した。

std::student_t_distribution<RealType>は浮動小数点数型の乱数xを以下の確率密度関数に従って分布する。

p(x|n)=1nπ⋅Γ((n+1)/2)Γ(n/2)⋅(1+x2n)−(n+1)/2 .

変数の宣言:

c++
std::student_t_distribution<RealType> d( n ) ;

RealTypeは浮動小数点数型でデフォルトはdouble。nはRealType型で、値の範囲は0<n。

使い方:

cpp
int main()
{
    std::student_t_distribution d( 1.0 ) ;
    d.n() ; // 1.0

    std::mt19937 e ;
    d(e) ;
}