【说明】
以前一般使用随机数用rand函数,rand函数有很多缺点。现在标准库引入了新的随机数引擎,对于生产随机数更加方便且功能强大了。
它一般由引擎+分布类型的方式来生成随机数。
【使用】
它需包含头文件
#include <random>
直接用引擎生成两个随机数:
default_random_engine e;
for (size_t i = 0; i < 2; i++)
{
cout << e() << " ";
}
cout << endl;
//生成范围
cout << "min:" << e.min() << "max:" << e.max() << endl;
上面的使用方式类似于rand。一般实际使用还需配合分布类型,如下:
//定义0到9的分布类型
uniform_int_distribution<unsigned> u(0, 9);
for (size_t i = 0; i < 2; i++)
{
cout << u(e) << " ";
}
cout << endl;
这样就可以生成0到9之间的随机数了,很简单吧。
当然这些随机数每次重新打开生成还是一样的,这就需要随机数种子了,种子是在引擎构建时传入了,一般我们用time(0):
//构建随机数引擎,传入随机种子
default_random_engine e2(time(0));
//浮点0到1
uniform_real_distribution<double> d(0, 1);
for (size_t i = 0; i < 2; i++)
{
cout << d(e2) << " ";
}
上面产生了0到1之间的随机数。
随机引擎的功能还不止这些,还有更多的分布类型供你操作,比如还可以生成非均匀分布的随机数。
在标准库中定义了20种分布类型供你选择。