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

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

C++中的std::uniform_real_distribution

在C++中,std::uniform_real_distribution是一个用于生成指定区间内均匀分布的随机数的工具类。这在很多游戏和模拟领域中都有广泛的应用。下面将介绍如何使用std::uniform_real_distribution工具类。

一、使用前准备

使用std::uniform_real_distribution需要先通过#include <random>将此类的头文件加入项目中。其中,<random>头文件包含了许多可用于生成随机数的工具类。同时,C++11或以上的标准才支持<random>头文件。

二、使用方法
1. 初始化工具类

在使用std::uniform_real_distribution之前,需要先创建该类的一个实例。示例代码如下:

#include <random>

// 创建一个名为a的std::uniform_real_distribution类实例对象,其随机数范围为1.0到10.0之间的均匀分布
std::uniform_real_distribution<double> a(1.0, 10.0);

上述代码中,<double>表示生成的随机数的类型为双精度浮点型(double),参数1和参数2分别表示生成随机数的范围的下限和上限。

2. 生成随机数

生成随机数的步骤包括两部分:首先使用std::random_device工具类生成随机数生成器,然后使用std::uniform_real_distribution工具类生成随机数。

#include <random>

// 生成随机数生成器
std::random_device rd;
std::mt19937 gen(rd());

// 创建一个名为a的std::uniform_real_distribution类实例对象,其随机数范围为1.0到10.0之间的均匀分布
std::uniform_real_distribution<double> a(1.0, 10.0);

// 生成随机数
double rand_num = a(gen);

在上述代码中,std::random_device是用于生成高质量随机数的工具类,std::mt19937是用于生成伪随机数序列的随机数生成器。

a(gen)表示使用std::uniform_real_distribution工具类生成一个随机数,gen表示使用std::mt19937生成的随机数序列。

三、完整示例代码
#include <iostream>
#include <random>

int main()
{
    // 生成随机数生成器
    std::random_device rd;
    std::mt19937 gen(rd());

    // 创建一个名为a的std::uniform_real_distribution类实例对象,其随机数范围为1.0到10.0之间的均匀分布
    std::uniform_real_distribution<double> a(1.0, 10.0);

    // 生成随机数
    double rand_num = a(gen);

    std::cout << "生成的随机数是:" << rand_num << std::endl;

    return 0;
}
四、注意事项
  1. 每次程序运行时,生成的随机数将会不同。
  2. 在使用std::uniform_real_distribution时,需要注意生成的随机数类型与参数类型一致。如果不一致,会导致编译错误。
  3. 在使用std::uniform_real_distribution时,需要注意参数1和参数2的顺序,如果参数1大于参数2,将会导致编译错误。
  4. 在使用std::uniform_real_distribution时,建议不要使用过大或过小的范围,以避免生成的随机数过于接近端点值。