C++11随机库函数:让程序充满惊喜

本文详细介绍了C++11中的随机库函数,包括伪随机数生成、设置种子、指定范围随机数、特定分布随机数生成以及随机数序列的创建方法。通过实例演示了如何在编程中有效利用这些功能。
摘要由CSDN通过智能技术生成

本篇博客讲解的是C++11随机库函数,感谢大家对我的支持!

        随机数在计算机编程中扮演着重要的角色,可以用于游戏开发、密码学、模拟实验等各种应用。而C++11引入的随机库函数为我们提供了一种简单方便的方式来生成各种类型的随机数。在本篇博客中,我们将带领大家深入了解C++11随机库函数,学习如何使用它们,以及结合生动活泼的示例展示其常见应用。

一、引入头文件和命名空间 在使用C++11随机库函数之前,我们需要引入相关的头文件和命名空间,以便使用其中的函数和类。

#include <random>
using namespace std;

二、生成伪随机数 生成伪随机数是随机库函数的基本功能。我们可以通过以下代码生成一个伪随机数:

minstd_rand generator;
int random_number = generator();
我们首先创建了一个名为generator的minstd_rand类型的对象,然后通过调用generator()函数来生成一个伪随机数,并将其赋值给变量random_number

三、设置随机数种子 在生成伪随机数之前,通常需要设置随机数种子,以确保每次运行程序时生成的随机数序列都是不同的。我们可以通过以下代码来设置种子:

seed_seq seed{10, 20, 30};
minstd_rand generator(seed);
我们使用seed_seq类将10、20和30作为种子初始化随机数生成器。通过设置不同的种子,我们可以生成不同的随机数序列。

四、生成指定范围的随机数 除了生成伪随机数外,C++11还提供了生成指定范围的随机数的功能。我们可以使用以下代码来生成指定范围内的随机数:

minstd_rand generator;
uniform_int_distribution<int> distribution(1, 10);
int random_number = distribution(generator);

这段代码我们首先创建了一个uniform_int_distribution对象distribution,并将1和10作为范围传递给它。然后,通过调用distribution(generator)函数来生成一个指定范围内的随机数,并将其赋值给变量random_number。

五、生成服从特定分布的随机数 除了生成指定范围的随机数外,C++11还提供了一些常用的分布类来生成服从特定分布的随机数。例如,我们可以使用以下代码来生成服从正态分布的随机数:

mt19937 generator;
normal_distribution<double> distribution(0.0, 1.0);
double random_number = distribution(generator);

在这段代码中,我们首先创建了一个normal_distribution对象distribution,并将均值0.0和标准差1.0传递给它。然后,通过调用distribution(generator)函数来生成一个服从正态分布的随机数,并将其赋值给变量random_number。

六、生成随机数序列 有时候我们需要生成一组随机数的序列,C++11提供了generate函数和random_shuffle函数来实现这个功能。以下是一个生成随机序列的示例:

mt19937 generator;
vector<int> sequence(10);
uniform_int_distribution<int> distribution(1, 100);
generate(sequence.begin(), sequence.end(), [&]() { return distribution(generator); });
random_shuffle(sequence.begin(), sequence.end());

代码中,我们首先创建了包含10个元素的整型向量sequence,然后使用generate函数和random_shuffle函数来生成随机序列。具体而言,我们使用generate函数将distribution(generator)作为生成器函数来填充向量sequence,然后使用random_shuffle函数将序列随机打乱。

感谢大家的观看,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tyz_C

你的打赏是我最大动力,感谢大家

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值