📌  相关文章
📜  C++中的std :: uniform_int_distribution a()方法与示例(1)

📅  最后修改于: 2023-12-03 14:59:50.838000             🧑  作者: Mango

C++中的std::uniform_int_distribution a()方法与示例

在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之间的整数范围,就可以通过生成器生成指定范围的随机数。

参考资料