C++中生成随机数有两种方法:一是使用传统的rand()函数,需配合srand()设置种子,适用于简单场景但随机性差;二是推荐的<random>头文件,通过随机数引擎如std::mt19937和分布器如std::uniform_int_distribution生成高质量随机数,支持多种分布,适合复杂项目。

在C++中生成随机数,常用的方法有两种:使用传统的 rand() 函数和现代C++推荐的 <random> 头文件。下面分别介绍它们的用法和注意事项。
使用 rand() 生成随机数
这是C语言沿用下来的方式,在C++中仍然可用,但不推荐用于高质量随机场景。
- 包含头文件:#include <cstdlib>
- 使用 srand() 设置种子,避免每次运行产生相同的序列
- 调用 rand() 获取随机整数(范围:0 到 RAND_MAX)
示例代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
srand(time(0)); // 以当前时间作为种子
int random_num = rand(); // 生成随机数
std::cout << "随机数:" << random_num << std::endl;
return 0;
}
如果要生成指定范围内的随机数,比如 [min, max],可以这样写:
立即学习“C++免费学习笔记(深入)”;
int random_in_range = min + rand() % (max - min + 1);
使用 <random> 头文件(推荐)
C++11 引入了更强大、更灵活的随机数工具,位于 <random> 头文件中。它能生成高质量、分布均匀的随机数。
- 使用随机数引擎(如 std::mt19937,梅森旋转算法)
- 配合分布器(如 std::uniform_int_distribution)控制范围
- 推荐使用 std::random_device 作为种子来源
示例代码(生成1到100之间的随机整数):
#include <iostream>
#include <random>
int main() {
std::random_device rd; // 真实随机种子
std::mt19937 gen(rd()); // 随机数引擎
std::uniform_int_distribution<int> dis(1, 100); // 分布范围
int random_num = dis(gen);
std::cout << "随机数:" << random_num << std::endl;
return 0;
}
也可以生成浮点数:
std::uniform_real_distribution<double> dis(0.0, 1.0);
两种方法对比
基本上就这些。日常小项目可以用 rand() 快速实现,正式开发建议使用 <random>。











