C++中常用rand()生成随机数,需配合srand(time(0))设置种子以避免重复序列,通过rand()%(b-a+1)+a可生成指定范围整数,但其随机质量有限,C++11推荐使用库中的mt19937和uniform_int_distribution获取更优分布。

在C++中生成随机数,常用的方法是使用标准库中的 rand() 函数。虽然它不是最精确或最现代的方式,但在许多基础程序和算法中仍然广泛使用。下面详细介绍 rand() 的用法以及如何正确生成随机数。
1. 使用 rand() 生成基本随机数
rand() 函数定义在 cstdlib 头文件中,调用时不需要参数,返回一个从 0 到 RAND_MAX 之间的整数(包含两端)。RAND_MAX 是一个系统常量,通常为 32767 或更大。
示例代码:
#include <iostream>
#include <cstdlib>
using namespace std;
<p>int main() {
cout << "随机数1: " << rand() << endl;
cout << "随机数2: " << rand() << endl;
return 0;
}
登录后复制
运行这段代码会发现每次输出的“随机数”其实都一样。这是因为 rand() 使用的是伪随机数生成器,需要一个“种子”来初始化序列。
立即学习“C++免费学习笔记(深入)”;
2. 使用 srand() 设置随机种子
为了使每次运行程序时得到不同的随机数序列,必须使用 srand() 函数设置随机种子。通常结合 time(0) 来获取当前时间作为种子。
正确做法示例:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
<p>int main() {
srand(time(0)); // 以当前时间作为种子
cout << "随机数1: " << rand() << endl;
cout << "随机数2: " << rand() << endl;
return 0;
}
登录后复制
注意:srand() 应该只调用一次,通常放在程序开始处。多次调用可能导致重复序列,尤其是时间间隔很短的情况下。
3. 生成指定范围内的随机数
使用 rand() % N 可以生成 0 到 N-1 的整数。若要生成 [a, b] 范围内的随机整数,可以使用以下公式:
标签: c++ 随机数 工具 ai ios stream 标准库
还木有评论哦,快来抢沙发吧~