📜  随机数 c++ (1)

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

随机数 C++ 编程

在编写 C++ 程序时,您可能需要使用随机数。随机数是在编程中用于模拟真实世界中的随机事件的重要元素。C++ 中有多种方法可以生成随机数,并且每种方法都有其优点和缺点。

生成随机数的方法
使用 rand 函数

C++ 标准库中的 rand() 函数是生成随机数的一种基本方法。这个函数可以生成介于 0 和 RAND_MAX 之间的一个随机数,其中 RAND_MAX 是 stdlib.h 中定义的常量。

#include <cstdlib>
#include <ctime>

int main() {
  srand(time(NULL)); // 使用当前时间作为随机数种子
  int rand_num = rand(); // 生成随机数
  return 0;
}
  • srand(time(NULL)); 用来生成随机数序列的种子,将当前时间戳作为种子可以提高随机性。
  • int rand_num = rand(); 用来生成随机数。
使用 C++11 中的随机数库

C++11 引入了一个新的随机数库 <random>,它提供了更强大的随机数生成工具和更好的随机数分布功能。

#include <random>

int main() {
  std::random_device rd; // 随机数种子,产生随机数的结构体
  std::mt19937 gen(rd()); // 基于随机数种子产生随机数生成器
  std::uniform_int_distribution<> dis(1, 6); // 用于生成 1 到 6 之间的随机数

  int rand_num = dis(gen); // 生成随机数
  return 0;
}
  • std::random_device rd; 用来获取系统提供的真实的随机数种子。
  • std::mt19937 gen(rd()); 使用随机数种子初始化随机数生成器。
  • std::uniform_int_distribution<> dis(1, 6); 设定随机数分布范围。
  • int rand_num = dis(gen); 生成随机数。
随机数的应用

使用随机数可以模拟各种随机事件,如投掷骰子、生成随机字符串等。下面是一个投掷骰子的示例程序:

#include <iostream>
#include <random>
#include <ctime>

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

  // 设定骰子点数随机分布
  std::uniform_int_distribution<> dis(1, 6);

  // 投掷骰子 10 次
  for (int n = 0; n < 10; ++n) {
    std::cout << dis(gen) << ' ';
  }

  std::cout << '\n';
  return 0;
}
总结

生成随机数是 C++ 编程中的一个重要问题,在了解各种生成随机数的方法后,我们可以根据不同情况选择适合自己的生成随机数的方法,从而更好地完成程序设计。