目录
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++ 中的基本用法及其配合使用的详细解析。