C++小技巧

c++随机数

在C++11中,可以使用新引入的std::random库来生成随机数

#include <iostream>
#include <random>

int main() {
    // 创建随机数引擎
    std::random_device rd;
    std::mt19937 gen(rd());

    // 创建均匀实数分布
    std::uniform_real_distribution<double> dis(0.0, 1.0);

    // 生成随机数
    double randomNumber = dis(gen);

    std::cout << "Random number: " << randomNumber << std::endl;

    return 0;
}

代码解释:

  1. std::random_device rd;创建一个真实随机数生成器,用于初始化随机数引擎。
  2. std::mt19937 gen(rd());创建一个合并型矩阵19937随机数引擎,并用random_device的值作为种子进行初始化。
  3. std::uniform_real_distribution<double> dis(0.0, 1.0);创建一个均匀实数分布对象,用于生成介于0.0和1.0之间的随机实数。
  4. double randomNumber = dis(gen);调用分布对象的dis(gen)函数,用随机数引擎gen生成一个符合指定分布的随机数。
#include <iostream>
#include <random>

int main() {
    // 设置固定的种子值
    unsigned seed = 123456;

    // 使用固定种子创建随机数引擎
    std::mt19937 gen(seed);

    // 创建均匀实数分布
    std::uniform_real_distribution<double> dis(0.0, 1.0);

    // 生成10个随机数
    for (int i = 0; i < 10; i++) {
        double randomNumber = dis(gen);
        std::cout << randomNumber << " ";
    }
    std::cout << std::endl;

    return 0;
}

在这个示例中,我们首先定义了一个固定的unsigned类型的种子值seed为123456。然后,在创建std::mt19937随机数引擎时,将这个固定的种子值传递给其构造函数,即std::mt19937 gen(seed);