说明:都在std空间下。
1. 随机数
random_device rd;// 是函数对象
cout << rd.entropy() << endl;// 熵,2的多少次方,返回32
cout << "min = " << rd.min() << ", max = " << rd.max() << endl;// rd.min() = 0, rd.max() = 2^32
// 求一百个0~26的随机数
for (int i = 0; i < 100; i++)
cout << (rd() % 26) << endl;// [0, 26)
可以简写成
for (int i = 0; i < 100; i++)
cout << random_device()() % 26 << endl;
2. 均匀分布
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<> dis(1, 6);// [1, 6]区间
// 随机生成10个在[1, 6]区间均匀分布的整数
for(int n = 0; n < 10; ++n)
cout << dis(gen) << ' ';
3. 正态分布(高斯分布)
random_device rd;
mt19937 gen(rd());
normal_distribution<> dis(0.0, 10.0);// dis(μ, σ)
// 随机生成50个服从以0.0为均值,10.0为标准差的正态分布的数
for (int i = 0; i < 50; i++)
cout << dis(gen) << endl;
……
更多概率分布函数类模板
1.均匀分布:
uniform_int_distribution 整数均匀分布
uniform_real_distribution 浮点数均匀分布
2.伯努利类型分布:(仅有yes/no两种结果,概率一个p,一个1-p)
bernoulli_distribution 伯努利分布
binomial_distribution 二项分布
geometry_distribution 几何分布
negative_biomial_distribution 负二项分布
3.Rate-based distributions:
poisson_distribution 泊松分布
exponential_distribution 指数分布
gamma_distribution 伽马分布
weibull_distribution 威布尔分布
extreme_value_distribution 极值分布
4.正态分布相关:
normal_distribution 正态分布
chi_squared_distribution 卡方分布
cauchy_distribution 柯西分布
fisher_f_distribution 费歇尔F分布
student_t_distribution t分布
5.分段分布相关:
discrete_distribution 离散分布
piecewise_constant_distribution 分段常数分布
piecewise_linear_distribution 分段线性分布