如何在C++中生成随机数

简介: 在C++中,生成随机数是一个常见的技术需求。本文将介绍如何在C++中使用标准库来生成随机数。

使用头文件

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>头文件,我们可以方便地生成各种类型的随机数。提供的示例展示了如何生成整数、浮点数和布尔值随机数。根据需求,我们可以选择不同的引擎和分布函数。

目录
相关文章
|
2月前
|
算法 测试技术 C#
C++二分算法:黑名单中的随机数
C++二分算法:黑名单中的随机数
|
8月前
|
算法 Linux C++
C++11 的随机数的分析
C++11 的随机数的分析
74 0
|
10月前
|
存储 C++
【C/C++】如何生成随机数?带你深入了解rand函数
【C/C++】如何生成随机数?带你深入了解rand函数
124 0
|
C++
【C++操作手册】C++生成指定范围内随机数rand(随机数种子)
【C++操作手册】C++生成指定范围内随机数rand(随机数种子)
543 0
|
测试技术 C++
C/C++编程题之明明的随机数
C/C++编程题之明明的随机数
|
编译器 C语言 C++
C++中rand随机数的用法
C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)
|
存储 C++
数据结构(C++语言版)实现顺序栈的创建,初始化,赋值随机数,入栈,出栈,获取栈顶元素,输出
数据结构(C++语言版)实现顺序栈的创建,初始化,赋值随机数,入栈,出栈,获取栈顶元素,输出
311 1
数据结构(C++语言版)实现顺序栈的创建,初始化,赋值随机数,入栈,出栈,获取栈顶元素,输出
|
Linux C++ Windows

相关产品

  • 云迁移中心