📜  cpp 范围内的随机数 - C++ (1)

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

C++ 范围内的随机数

在 C++ 中,我们可以使用标准库中的随机数生成器来生成范围内的随机数。以下是一些常见的方法和技巧。

首先,我们需要包含 <random> 头文件来使用随机数生成器。C++ 中的随机数生成器主要有两种类型:伪随机数生成器(pseudo-random number generator)和真随机数生成器(true random number generator),我们通常使用伪随机数生成器。

生成范围内的随机整数

我们可以使用 <random> 头文件中的 std::uniform_int_distribution 类来生成一个指定范围内的随机整数。以下是一个示例:

#include <random>

int getRandomNumber(int min, int max) {
    std::random_device rd;  // 随机设备,用于生成种子
    std::mt19937 gen(rd());  // 以随机设备生成的种子初始化随机数生成器
    std::uniform_int_distribution<> dis(min, max);  // 指定范围内的均匀分布

    return dis(gen);
}

int main() {
    int randomNum = getRandomNumber(1, 10);
    // 在 1 到 10 之间生成一个随机整数
    return 0;
}

在上面的示例中,我们使用 std::random_device 生成一个随机设备,用于生成种子。然后,我们使用 std::mt19937 类以随机设备生成的种子来初始化一个伪随机数生成器。最后,我们使用 std::uniform_int_distribution 类来指定生成的整数范围。

生成范围内的随机浮点数

要生成范围内的随机浮点数,我们可以使用 std::uniform_real_distribution 类。以下是一个示例:

#include <random>

double getRandomNumber(double min, double max) {
    std::random_device rd;  // 随机设备,用于生成种子
    std::mt19937 gen(rd());  // 以随机设备生成的种子初始化随机数生成器
    std::uniform_real_distribution<> dis(min, max);  // 指定范围内的均匀分布

    return dis(gen);
}

int main() {
    double randomNum = getRandomNumber(0.0, 1.0);
    // 在 0.0 到 1.0 之间生成一个随机浮点数
    return 0;
}

在上面的示例中,我们使用 std::uniform_real_distribution 类来指定生成的浮点数范围。

设置随机种子

在上面的示例中,我们使用 std::random_device 来生成随机设备,并以其生成的随机种子来初始化随机数生成器。这个种子通常是不可见的。如果我们需要指定一个可见的种子,比如固定的种子用于调试或重现,我们可以使用 std::mt19937seed 方法来设置种子。以下是一个示例:

#include <random>

int getRandomNumber(int min, int max, unsigned seed) {
    std::mt19937 gen(seed);  // 使用指定种子初始化随机数生成器
    std::uniform_int_distribution<> dis(min, max);  // 指定范围内的均匀分布

    return dis(gen);
}

int main() {
    int randomNum = getRandomNumber(1, 10, 42);
    // 使用种子 42,在 1 到 10 之间生成一个随机整数
    return 0;
}

在上面的示例中,我们使用 std::mt19937seed 方法来设置种子为 42。

这些方法可以帮助我们在 C++ 中快速生成指定范围内的随机数。请记住,在使用随机数时,为了能够得到不同的随机序列,我们应该确保种子在每次程序运行时都是不同的。


希望这篇介绍能帮助你在 C++ 中生成范围内的随机数。返回的代码片段已经按照 Markdown 格式标明。