#include <iostream>
#include <random>
using namespace std;
int main()
{
std::random_device rd;
std::default_random_engine rg(rd());
std::uniform_int_distribution<unsigned> uid(0, 10);
int a=5;
while(a--)
std::cout<< uid(rg)<<std::endl;
return 0;
}
结果:
4
4
2
9
0
...Program finished with exit code 0
Press ENTER to exit console.
详解:
std::random_device rd; // random_device是一个真随机数生成器。调用其括号运算符可从中产生一个样本。不幸的是,生成真实的随机数往往比生成伪随机数更昂贵,因此,折衷方案倾向于生成单个真实的随机数作为种子传递给伪随机生成器。因此,在您的第一个示例中,通过调用其括号运算符(rdev())来对random_device进行一次采样,返回一个真正随机的值,该值用作std::default_random_engine对象的种子。
std::default_random_engine rg(rd()); // 使用种子rd()创建1个随机数
std::uniform_int_distribution<unsigned> uid(0, 10); //生成的随机数在0 ~ 10之间,且均为闭区间
uid(rg) //使用随机数rg选择封闭区间范围并生成随机数