📅  最后修改于: 2023-12-03 14:59:50.838000             🧑  作者: Mango
在C++中,std::uniform_int_distribution
是一个随机数生成器,用于生成指定范围内的均匀分布的整数值。该方法用于生成随机数,可以用于实现一些随机选择的算法,例如随机选择游戏棋子、随机生成证书验证码等。
方法的定义如下所示:
template<typename T = int>
class uniform_int_distribution;
其中,typename T = int
表示随机生成的整数类型,默认设定为int类型。
要使用std::uniform_int_distribution
方法,需要包含头文件<random>
。
在使用过程中,需要先定义随机数生成器和随机数分布器,并将随机数生成器作为参数传入随机数分布器中。生成器可以是C++标准库中提供的伪随机数生成器(如线性同余法),也可以是自定义的生成器。
以下是一个生成范围在1-10之间的整数随机数的示例:
#include <random>
#include <iostream>
int main() {
std::random_device rd; // 随机数生成器
std::mt19937 gen(rd()); // 随机数分布器
std::uniform_int_distribution<> dist(1, 10); // 分布器,生成1到10之间的整数
for (int i = 0; i < 10; ++i) {
std::cout << dist(gen) << " ";
}
std::cout << std::endl;
return 0;
}
在上述代码中,std::random_device
是一个提供比较高质量随机数的随机数生成器,它通常会基于硬件和操作系统提供的“真正”的随机源生成随机数。而std::mt19937
是一个分布式伪随机数生成器,生成器的状态大小为19937位,生成的随机数可以在概率上接近于各种均匀分布。通过在分布器中定义1到10之间的整数范围,就可以通过生成器生成指定范围的随机数。