📅  最后修改于: 2023-12-03 14:39:54.765000             🧑  作者: Mango
在编写程序时,通常需要用到随机数。C++ 标准库中提供了很多用于生成随机数的函数和类。在本文中,我们将探讨如何在 C++ 中生成随机数。
rand()
函数是 C++ 标准库中最基本的用于生成随机数的函数。它的定义在头文件 <cstdlib>
中。使用该函数需要以下步骤:
在程序中包含头文件 <cstdlib>
。
#include <cstdlib>
调用 rand()
函数。该函数将返回一个随机数,这个随机数的范围是 0 到 RAND_MAX
之间的一个整数。RAND_MAX
是一个常量,表示随机数的最大值。
int randomNumber = rand();
将生成的随机数转换为所需要的范围。例如,如果需要生成 1 到 10 之间的随机数,需要使用模运算将随机数限制在这个范围内。
int randomNumber = rand() % 10 + 1;
下面是一个完整的例子,生成 1 到 10 之间的随机数并输出:
#include <cstdlib>
#include <iostream>
int main()
{
int randomNumber = rand() % 10 + 1;
std::cout << "Random number is: " << randomNumber << std::endl;
return 0;
}
除了 rand()
函数,C++ 标准库中还提供了其他的随机数生成方法,例如随机数引擎和分布。
随机数引擎是一个对象,用于生成随机数序列。C++ 标准库中提供了多种随机数引擎,包括线性同余算法和梅森旋转算法等。使用随机数引擎需要以下步骤:
<random>
。operator()
函数生成随机数。下面是一个例子,使用线性同余算法生成随机数:
#include <random>
#include <iostream>
int main()
{
std::default_random_engine eng(42);
std::uniform_int_distribution<int> dist(1, 10);
int randomNumber = dist(eng);
std::cout << "Random number is: " << randomNumber << std::endl;
return 0;
}
在这个例子中,我们创建了一个名为 eng 的随机数引擎对象,使用种子 42 初始化。然后创建了一个名为 dist 的均匀整数分布对象,用于限制随机数的范围在 1 到 10 之间。最后,调用 dist(eng)
函数生成随机数。
随机数分布是一个对象,用于限制随机数的范围和分布方式。C++ 标准库中提供了多种随机数分布,包括均匀分布、正态分布和泊松分布等。使用随机数分布需要以下步骤:
<random>
。operator()
函数生成随机数。下面是一个例子,使用正态分布生成随机数:
#include <random>
#include <iostream>
int main()
{
std::default_random_engine eng(42);
std::normal_distribution<double> dist(5, 2);
double randomNumber = dist(eng);
std::cout << "Random number is: " << randomNumber << std::endl;
return 0;
}
在这个例子中,我们创建了一个名为 eng 的随机数引擎对象,使用种子 42 初始化。然后创建了一个名为 dist 的正态分布对象,用于生成均值为 5,标准差为 2 的正态分布随机数。最后,调用 dist(eng)
函数生成随机数。