#include <iostream>
#include <random>
using namespace std;
int main()
{
// 乱数の初期設定
random_device sd; // 予測不能な乱数生成器(class),初期設定のために使用
mt19937 rnd(sd()); // 乱数生成期の定義とその初期設定
// ベルヌーイ分布(成功確率 : 0.7)
bernoulli_distribution bernoulli(0.7); // コンストラクタ
cout << "ベルヌーイ分布 : 母数 p : 0.7\n";
for (int i1 = 0; i1 < 10; i1++)
cout << " " << bernoulli(rnd) << endl;
// 二項分布(成功確率 0.7 の試行を 20 回行ったときの成功回数)
binomial_distribution<> binomial(20, 0.7); // コンストラクタ
cout << "二項分布 : 母数 p : 0.7,20 回行ったときの成功回数\n";
for (int i1 = 0; i1 < 5; i1++)
cout << " " << binomial(rnd) << endl;
// 幾何分布(成功確率 0.3 の試行において,初めて成功するまでに何回失敗したか)
geometric_distribution<> geometric(0.3); // コンストラクタ
cout << "幾何分布 : 母数 p : 0.3,初めて成功するまでに何回失敗したか\n";
for (int i1 = 0; i1 < 5; i1++)
cout << " " << geometric(rnd) << endl;
// 負の二項分布(成功確率 0.3 の試行において,5 回成功するまでに失敗した回数)
negative_binomial_distribution<> negative(1, 0.3); // コンストラクタ
cout << "負の二項分布 : 母数 p : 0.3,1 回成功するまでに失敗した回数\n";
for (int i1 = 0; i1 < 5; i1++)
cout << " " << negative(rnd) << endl;
return 0;
}