📜  c++生成随机数上下界-C++(1)

📅  最后修改于: 2023-12-03 14:59:52.069000             🧑  作者: Mango

C++生成随机数上下界

在 C++ 中生成随机数通常需要使用头文件 cstdlib 中定义的函数 rand()。不过,如果您想要限制生成的随机数的上下界,可以使用一些技巧。

生成[0, n]范围内的随机数

要生成一个位于 $[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]范围内的随机数

要生成一个位于 $[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;
}

在代码中指定一个固定的随机种子,可以保证每次生成的随机数序列相同。