📅  最后修改于: 2023-12-03 14:58:41.200000             🧑  作者: Mango
在编写 C++ 程序时,您可能需要使用随机数。随机数是在编程中用于模拟真实世界中的随机事件的重要元素。C++ 中有多种方法可以生成随机数,并且每种方法都有其优点和缺点。
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 引入了一个新的随机数库 <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++ 编程中的一个重要问题,在了解各种生成随机数的方法后,我们可以根据不同情况选择适合自己的生成随机数的方法,从而更好地完成程序设计。