您的位置:首页 > 编程语言 > C语言/C++

<random>头文件中的一些概率分布函数对象

2016-11-16 20:02 344 查看
说明:都在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 分段线性分布
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐