使用头文件
C++标准库提供了<random>
头文件,其中包含了许多用于生成随机数的类和函数。
首先,我们需要创建一个随机数引擎对象,它负责生成随机数序列。可以根据需求选择不同的引擎。例如,可以使用default_random_engine
作为默认引擎:
#include <random>
std::default_random_engine engine;
接下来,我们可以使用引擎对象生成不同类型的随机数。以下是一些示例:
生成整数随机数
#include <random>
std::random_device rd; // 用于生成种子
std::mt19937 engine(rd()); // 使用Mersenne Twister引擎
std::uniform_int_distribution<int> dist(1, 100); // 生成1到100之间的整数
int random_number = dist(engine);
在上述代码中,我们使用了std::random_device
来生成种子,并将其传递给std::mt19937
引擎。然后,我们创建了一个std::uniform_int_distribution
对象,用于指定生成整数的范围。最后,通过调用dist(engine)
来生成随机数。
生成浮点数随机数
#include <random>
std::random_device rd; // 用于生成种子
std::mt19937 engine(rd()); // 使用Mersenne Twister引擎
std::uniform_real_distribution<double> dist(0.0, 1.0); // 生成0到1之间的浮点数
double random_number = dist(engine);
在上述代码中,我们使用了与前面相同的引擎和种子生成器,但是使用了std::uniform_real_distribution
来生成指定范围内的浮点数。
生成布尔值随机数
#include <random>
std::random_device rd; // 用于生成种子
std::mt19937 engine(rd()); // 使用Mersenne Twister引擎
std::bernoulli_distribution dist(0.5); // 以0.5的概率生成true或false
bool random_value = dist(engine);
在上述代码中,我们使用了std::bernoulli_distribution
来生成以给定概率生成true或false的布尔值。
总结
通过使用C++标准库中的<random>
头文件,我们可以方便地生成各种类型的随机数。提供的示例展示了如何生成整数、浮点数和布尔值随机数。根据需求,我们可以选择不同的引擎和分布函数。