C++(rand()、srand())
rand() 和 srand() 是 C++ 中用于生成随机数的函数。它们定义在 <cstdlib> 头文件中,并且在 C 语言中也有相同的用法。
1. rand() 函数
- 功能:
rand()函数用于生成一个范围在0到RAND_MAX之间的随机整数,其中RAND_MAX是一个常量,通常定义为32767(但这个值可能因系统不同而有所变化)。 - 用法:
int rand(); - 返回值:
rand()返回一个伪随机整数。
示例:
#include <iostream>
#include <cstdlib> // 包含 rand 和 srand 函数
using namespace std;
int main() {
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
return 0;
}
上面的代码会输出 5 个随机整数。
2. srand() 函数
- 功能:
srand()函数用于为rand()函数设定一个种子值。这个种子值决定了rand()函数生成的随机数序列。 - 用法:
void srand(unsigned int seed); - 参数:
seed是一个无符号整数,用作随机数生成器的种子。 - 注意事项: 如果你不调用
srand()来设置种子,那么rand()每次运行时都会生成相同的随机数序列,因为默认的种子是固定的。如果想要每次运行程序时生成不同的随机数,可以将srand()的参数设置为time(0),这是当前时间的秒数。
示例:
#include <iostream>
#include <cstdlib>
#include <ctime> // 包含 time 函数
using namespace std;
int main() {
srand(time(0)); // 使用当前时间作为随机数生成的种子
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
return 0;
}
这段代码将生成每次运行都不同的随机数。
3. rand() 和 srand() 的配合使用
- 通常在程序开始时调用
srand()来设置种子,然后在需要随机数的地方调用rand()。 - 若多次调用
srand(),每次种子值相同,则产生的随机数序列也相同。
示例:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(12345); // 设置固定的种子
cout << "固定种子:" << endl;
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
srand(time(0)); // 使用当前时间作为种子
cout << "时间种子:" << endl;
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
return 0;
}
这段代码首先会输出一组固定的随机数(因为 srand(12345)),然后输出一组不同的随机数(因为 srand(time(0)) 使用了当前时间作为种子)。
4. 小结
rand()用于生成伪随机数。srand()用于设置生成伪随机数的种子。- 若不调用
srand()或使用相同的种子,rand()每次生成的随机数序列相同。 - 通常通过
srand(time(0))来生成不同的随机数序列。
这就是 rand() 和 srand() 在 C++ 中的基本用法及其配合使用的详细解析。

浙公网安备 33010602011771号