【说明】
以前一般使用随机数用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种分布类型供你选择。
本文介绍了C++11引入的随机数引擎,作为替代传统rand()函数的更强大工具。通过引擎与分布类型的结合,可以方便地生成随机数。文章提及使用头文件 `<random>`,并指出设置种子(如`time(0)`)的重要性,以确保每次运行的随机性。此外,还提到随机数引擎支持多种分布类型,包括非均匀分布,提供了20种分布类型供开发者选择。
1137

被折叠的 条评论
为什么被折叠?



