Skip to content

Files

Latest commit

 

History

History
215 lines (156 loc) · 5.26 KB

045-random-part3.md

File metadata and controls

215 lines (156 loc) · 5.26 KB

正規分布

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

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

( x , | , μ , σ ) = 1 σ 2 π exp ( , ( x μ ) 2 2 σ 2 )  .

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

変数の宣言:

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

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

使い方:

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 ) = 1 s x 2 π exp ( ( ln x m ) 2 2 s 2 )  .

変数の宣言:

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

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

使い方:

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 ) 2 n / 2  .

変数の宣言:

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

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

使い方:

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 a b ) 2 , ) ) 1  .

変数の宣言:

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

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

使い方:

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 ) ( m n ) m / 2 x ( m / 2 ) 1 ( 1 + m x n ) ( m + n ) / 2  .

変数の宣言:

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

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

使い方:

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 ) = 1 n π Γ ( ( n + 1 ) / 2 ) Γ ( n / 2 ) ( 1 + x 2 n ) ( n + 1 ) / 2  .

変数の宣言:

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

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

使い方:

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

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