📌  相关文章
📜  C ++中的std :: uniform_int_distribution类(1)

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

C++中的std::uniform_int_distribution类

在C++11及以上版本中,标准库提供了一个非常有用的随机数分布类:std::uniform_int_distribution,用于生成指定范围内的随机整数。

使用方法

使用std::uniform_int_distribution类需要包含头文件,并创建一个随机数引擎对象,如std::default_random_engine:

#include <random>

std::default_random_engine generator;  // 随机数引擎

然后创建一个std::uniform_int_distribution对象,并调用其operator()方法即可生成随机整数:

std::uniform_int_distribution<int> distribution(1, 6);  // 随机整数分布,范围1~6
int rand_num = distribution(generator);  // 生成随机整数

上面的代码生成了1到6之间的随机整数。

参数说明

std::uniform_int_distribution类有两个模板参数:整数类型和参数类型,其中参数类型默认为整数类型,一般情况下只需要指定整数类型即可。

构造函数接受两个参数,表示随机整数的范围:起始值和终止值。例如:std::uniform_int_distribution distribution(1, 6); 表示生成1到6之间的随机整数。

示例代码

下面是一个完整的随机数生成示例代码,它将生成指定范围内的10个随机整数并输出:

#include <iostream>
#include <random>

int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution<int> distribution(1, 6);

    for (int i = 0; i < 10; i++) {
        int rand_num = distribution(generator);
        std::cout << rand_num << " ";
    }

    std::cout << std::endl;
    return 0;
}

输出结果可能为:6 1 6 2 2 2 6 4 6 4

注意事项
  • std::uniform_int_distribution类的构造函数参数是左闭右闭的,即生成的随机整数范围包括起始值和终止值。
  • 需要注意的是,随机数引擎和分布对象是可以多次生成随机数的,因此不应该在每次需要生成随机数时都创建一个新的对象,应该在程序运行的生命周期内保持引擎对象和分布对象的单例状态。