C++生成随机数

一、random_device

创建随机设备对象,通过本设备的随机数生成器生成随机种子,而不是使用时间生产随机种子

1
std::random_device rd;

二、mt19937

创建随机数引擎对象,参数是创建的随机设备对象random_device,随机设备对象重载了(),rd()在这里是可调用对象

1
std::mt19937 gen(rd());

三、uniform_int_distribution

创建随机数分布对象-均匀分布,参数是范围,最小值和最大值的范围,范围是闭区间

1
std::uniform_int_distribution<int> dis(min,max);

四、生成随机数

1
int randomNumber = dis(gen);

完整代码

生成一个随机数数组

1
2
3
4
5
6
7
8
9
10
11
12
std::vector<int> generateRandomArray(int size)
{
std::vector<int> arr;
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dis(0, 10000);
for (size_t i = 0; i < size; i++)
{
arr.push_back(dis(gen));
}
return arr;
}