normalC++11

[機能]

  正規分布乱数,対数正規分布乱数,カイ二乗分布乱数,コーシー分布乱数,フィッシャーの F 分布乱数,ステューデントの t 分布乱数を生成します.

[形式]
#include <random>
		// 正規分布
template <class RealType = double> class normal_distribution;
		// 対数正規分布
template <class RealType = double> class lognormal_distribution;
		// カイ二乗分布
template <class RealType = double> class chi_squared_distribution;
		// コーシー分布
template <class RealType = double> class cauchy_distribution;
		// フィッシャーの F 分布
template <class RealType = double> class fisher_f_distribution;
		// ステューデントの t 分布
template <class RealType = double> class student_t_distribution;		

[使用例]

  1. normal_distribution,lognormal_distribution,chi_squared_distribution,cauchy_distribution,fisher_f_distribution,student_t_distribution の使用方法です.
    #include <iostream>
    #include <random>
    
    using namespace std;
    
    int main()
    {
    			// 乱数の初期設定
    	random_device sd;   // 予測不能な乱数生成器(class),初期設定のために使用
    	mt19937 rnd(sd());   // 乱数生成期の定義とその初期設定
    			// 正規分布(平均 : 0,標準偏差 : 1)
    	normal_distribution<> normal(0.0, 1.0);   // コンストラクタ
    	cout << "正規分布(平均 : 0,標準偏差 : 1)\n";
    	for (int i1 = 0; i1 < 10; i1++)
    		cout << "  " << normal(rnd) << endl;
    			// 対数正規分布(平均 : 1,標準偏差 : 0.5)
    	lognormal_distribution<> lognor(1.0, 0.5);   // コンストラクタ
    	cout << "対数正規分布(平均 : 1,標準偏差 : 0.5)\n";
    	for (int i1 = 0; i1 < 10; i1++)
    		cout << "  " << lognor(rnd) << endl;
    			// カイ二乗分布(自由度 : 1)
    	chi_squared_distribution<> chi(1);   // コンストラクタ
    	cout << "カイ二乗分布(自由度 : 1)\n";
    	for (int i1 = 0; i1 < 10; i1++)
    		cout << "  " << chi(rnd) << endl;
    			// コーシー分布(位置母数 : 0,尺度母数 : 1)
    	cauchy_distribution<> cauchy(0.0, 1.0);   // コンストラクタ
    	cout << "コーシー分布(位置母数 : 0,尺度母数 : 1)\n";
    	for (int i1 = 0; i1 < 10; i1++)
    		cout << "  " << cauchy(rnd) << endl;
    			// フィッシャーの F 分布(自由度 : 5, 10)
    	fisher_f_distribution<> fisher(5, 10);   // コンストラクタ
    	cout << "フィッシャーの F 分布(自由度 : 5, 10)\n";
    	for (int i1 = 0; i1 < 10; i1++)
    		cout << "  " << fisher(rnd) << endl;
    			// ステューデントの t 分布(自由度 : 1)
    	student_t_distribution<> student(1);   // コンストラクタ
    	cout << "ステューデントの t 分布(自由度 : 1)\n";
    	for (int i1 = 0; i1 < 10; i1++)
    		cout << "  " << student(rnd) << endl;
    
    	return 0;
    }
    			
    (出力)
    正規分布(平均 : 0,標準偏差 : 1)
      0.414089
      0.225568
      0.413464
      2.53933
      1.46929
      0.145927
      -0.218056
      -0.545812
      -0.432501
      0.0772221
    対数正規分布(平均 : 1,標準偏差 : 0.5)
      1.94746
      4.79812
      1.6784
      1.11475
      3.09734
      3.86134
      2.52441
      2.7473
      4.48764
      1.70702
    カイ二乗分布(自由度 : 1)
      1.16474
      6.9899
      0.0275879
      0.402263
      0.331084
      0.491125
      0.135123
      3.14842
      0.0427255
      3.79744
    コーシー分布(位置母数 : 0,尺度母数 : 1)
      0.414719
      0.428837
      -0.905774
      5.46546
      0.766987
      -0.367942
      1.81116
      -0.557449
      -0.2425
      -0.73605
    フィッシャーの F 分布(自由度 : 5, 10)
      0.407641
      0.456606
      0.593865
      1.84604
      0.695167
      2.79783
      1.10591
      1.15348
      1.59252
      5.35562
    ステューデントの t 分布(自由度 : 1)
      -2.40895
      0.220061
      1.59782
      -3.15468
      -1.25133
      -0.958936
      0.310573
      -1.0481
      -0.340855
      -0.648591
    			
[参照]

mt19937uniformBernoulliPoissonsampling

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引