📅  最后修改于: 2023-12-03 14:59:52.069000             🧑  作者: Mango
在 C++ 中生成随机数通常需要使用头文件 cstdlib
中定义的函数 rand()
。不过,如果您想要限制生成的随机数的上下界,可以使用一些技巧。
要生成一个位于 $[0, n]$ 范围内的随机数,可以使用以下代码:
#include <cstdlib>
#include <ctime>
int main() {
srand(time(nullptr)); // 给定随机种子
int n = 10; // 上界
int x = rand() % (n + 1); // 生成值
return 0;
}
上面的代码中,srand()
函数指定了一个随机种子,以确保每次运行程序时都可以获得不同的序列。rand() % (n + 1)
生成一个介于 $0$ 和 $n$ 之间的随机整数(包括 $0$ 和 $n$)。
要生成一个位于 $[l, r]$ 范围内的随机数,可以使用以下代码:
#include <cstdlib>
#include <ctime>
int main() {
srand(time(nullptr)); // 给定随机种子
int l = 1; // 下界
int r = 10; // 上界
int x = l + rand() % (r - l + 1); // 生成值
return 0;
}
上面的代码中,rand() % (r - l + 1)
生成一个介于 $0$ 和 $r-l$ 之间(包括 $0$ 和 $r-l$)的随机整数,加上 $l$,得到一个介于 $l$ 和 $r$ 之间的随机整数。
默认情况下,rand()
的随机种子是以当前时间作为参数的。如果要调整随机数生成的序列,可以使用 srand()
函数设定随机种子。
#include <cstdlib>
#include <ctime>
int main() {
srand(1234); // 给定随机种子
// ...
return 0;
}
在代码中指定一个固定的随机种子,可以保证每次生成的随机数序列相同。