📜  C++ 中的 rand(1)

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

C++ 中的 rand

在 C++ 中,rand() 是一个用来生成随机数的函数。它是 C 标准库中的一部分,也是 C++ 标准库中的一部分。

用法

在 C++ 中使用 rand() 时,需要在头文件 cstdlib 中包含该函数。下面是一个简单的示例,用于生成一个 1 到 10 之间的随机整数:

#include <cstdlib>
#include <iostream>

int main()
{
   int random_variable = rand() % 10 + 1;
   std::cout << "Random value: " << random_variable << std::endl;
   return 0;
}

其中,rand() % 10 + 1 用于生成 1 到 10 之间的随机整数。如果要生成其他范围之内的随机整数,只需要修改 101 的值即可。例如,如果要生成 5 到 20 之间的随机整数,可以这样写:

int random_variable = rand() % 16 + 5;

除了生成整数,rand() 还可以用于生成随机浮点数。下面是一个例子:

double random_variable = (double)rand() / RAND_MAX;
std::cout << "Random value: " << random_variable << std::endl;

该例子中,将 rand() 的返回值除以 RAND_MAX,得到的结果是 0 到 1 之间的随机浮点数。

随机数种子

在使用 rand() 之前,有必要先设置随机数种子。否则,每次程序运行时,生成的随机数序列都是相同的。可以使用 time() 函数来设置随机数种子,以确保每次生成的随机数序列都是不同的。下面是一个示例:

#include <cstdlib>
#include <iostream>
#include <ctime>

int main()
{
   std::srand(std::time(nullptr));
   int random_variable = rand() % 10 + 1;
   std::cout << "Random value: " << random_variable << std::endl;
   return 0;
}

该示例中,srand() 函数使用参数 time(nullptr) 来设置随机数种子。time(nullptr) 返回的是当前时间的秒数,因此每次程序运行时,随机数种子都是不同的。

注意事项
  • 生成的随机数并不是真正的随机数,它们是根据一定的算法计算出来的伪随机数。因此,不要将其用于需要高度保密的加密算法中。
  • rand() 的返回值是 int 类型,因此如果需要生成较大的随机数,需要使用多次调用 rand() 来拼接生成。例如,要生成 0 到 100000 之间的随机数,可以这样写:
int random_variable = rand() % 1000 * 100 + rand() % 100;
总结

rand() 是 C++ 标准库中用来生成随机数的函数。使用前需要设置随机数种子,否则每次程序运行时生成的随机数序列都是相同的。随机数是伪随机数,不适用于需要高度保密的加密算法中。如果需要生成较大的随机数,需要使用多次调用 rand() 来拼接生成。