1.随机数由生成器和分布器结合产生
生成器generator:能够产生离散的等可能分布数值
分布器distributions: 能够把generator产生的均匀分布值映射到其他常见分布,如均匀分布uniform,正态分布normal,二项分布binomial,泊松分布poisson
2.分布器利用运算符()产生随机数,要传入一个generator对象作为参数
std::default_random_engine generator;
std::uniform_int_distribution<int> dis(0,100);
for(int i=0;i<5;i++)
{
std::cout<<dis(generator)<<std::endl;
}
如果嫌每次调用都要传入generator对象麻烦,可以使用std::bind,要包含头文件functional
auto dice = std::bind(distribution,generator)以后就可以直接调用dice()产生复合均匀分布的随机数。但是多次运行上例会发现每次产生的随机数序列都一样,因为没有设定种子(同cstdlib库中的rand和srand关系)
std::default_random_engine generator;
std::uniform_int_distribution<int> dis(0,100);
auto dice= std::bind(dis,generator);
for(int i=0;i<5;i++)
{
std::cout<<dice()<<std::endl;
}