📜  如何在 C++ 中生成随机数(1)

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

如何在 C++ 中生成随机数

在 C++ 中生成随机数可以使用标准库 <random> 中的随机数生成器。下面我们将介绍如何使用这个库来生成均匀分布和正态分布的随机数。

均匀分布随机数
代码示例
#include <iostream>
#include <random>

int main() {
    // 创建随机数生成器
    std::default_random_engine generator;
    // 创建均匀分布
    std::uniform_real_distribution<double> distribution(0.0, 1.0);
    // 生成随机数
    double random_number = distribution(generator);

    std::cout << "随机数:" << random_number << std::endl;

    return 0;
}
解释说明

均匀分布是指在一个范围内的每个数值出现的概率相等。上面的代码使用了标准库中的 default_random_engine 类创建了一个随机数生成器。uniform_real_distribution 类用于创建一个均匀分布,其构造函数接受两个参数,分别为范围的最小值和最大值。在上面的例子中,我们创建了一个在 [0.0, 1.0) 范围内的均匀分布。通过调用 distribution(generator) 可以返回一个在该范围内的随机数。

正态分布随机数
代码示例
#include <iostream>
#include <random>

int main() {
    // 创建随机数生成器
    std::default_random_engine generator;
    // 创建正态分布
    std::normal_distribution<double> distribution(0.0, 1.0);
    // 生成随机数
    double random_number = distribution(generator);

    std::cout << "随机数:" << random_number << std::endl;

    return 0;
}
解释说明

正态分布是指符合正态分布规律的概率分布。上面的代码同样是先使用 default_random_engine 类创建了一个随机数生成器。使用 normal_distribution 类创建一个正态分布,其构造函数也接受两个参数,分别是正态分布的期望和方差。在上面的例子中,我们创建了一个均值为 0,标准差为 1 的正态分布。通过调用 distribution(generator) 可以返回一个符合该正态分布的随机数。

总结

通过使用标准库中的随机数生成器,我们可以方便地生成均匀分布和正态分布的随机数。需要注意的是,随机数生成器需要在代码中被初始化,而且需要谨慎选取随机数生成器和分布。如果需要生成更加高效的随机数并发代码,可以使用 C++17 的 std::jthread