#include <iostream>
#include <random>
using namespace std;
int main()
{
// 乱数の初期設定
random_device sd; // 予測不能な乱数生成器(class),初期設定のために使用
mt19937 rnd(sd()); // 乱数生成期の定義とその初期設定
// ポワソン分布(λ : 4.0)
poisson_distribution<> poisson(4.0); // コンストラクタ
cout << "Poisson 分布(λ : 4.0)\n";
for (int i1 = 0; i1 < 10; i1++)
cout << " " << poisson(rnd) << endl;
// 指数分布(平均 : 0.25)
exponential_distribution<> exponent(0.25); // コンストラクタ
cout << "指数分布(平均 : 0.25)\n";
for (int i1 = 0; i1 < 10; i1++)
cout << " " << exponent(rnd) << endl;
// ガンマ分布(形状母数(α) n : 3,尺度母数(β) μ : 10)
// 期間 μ に1回程度起こる事象が n 回起こるまでの時間(期待値:nμ)
gamma_distribution<> gamma(3.0, 10.0); // コンストラクタ
cout << "ガンマ分布(形状母数(α) n : 3,尺度母数(β) μ : 10)\n";
for (int i1 = 0; i1 < 10; i1++)
cout << " " << gamma(rnd) << endl;
// ワイブル分布(ワイブル係数(形状パラメータ) : 1,尺度パラメータ : 2)
weibull_distribution<> weibull(1.0, 2.0); // コンストラクタ
cout << "ワイブル分布(ワイブル係数(形状パラメータ) : 1,尺度パラメータ : 2)\n";
for (int i1 = 0; i1 < 10; i1++)
cout << " " << weibull(rnd) << endl;
// 極値分布(位置パラメータ : 0,尺度パラメータ : 1)
extreme_value_distribution<> ext(0.0, 1.0); // コンストラクタ
cout << "極値分布(位置パラメータ : 0,尺度パラメータ : 1)\n";
for (int i1 = 0; i1 < 10; i1++)
cout << " " << ext(rnd) << endl;
return 0;
}