C++ 11 random库
- random库的组件主要有随机数引擎和随机数分布引擎
随机数引擎类
- 类名:
default_random_engine
- 声明方法:
类名 对象名
- 随机数引擎类是可以独立运行的随机数发生器
- 以均匀的概率生成某一类型的随机数
- 无法指定随机数的范围、概率等信息,因而被称为“原始的随机数发生器”,由于不能指定生成随机数的范围,它通常不会被单独使用。
随机数分布类
类名 |
声明方法 |
效用 |
uniform_int_distribution |
类名<随机数类名> 对象名 |
指定范围的随机非负整数 |
uniform_real_distribution |
类名<随机数类名> 对象名 |
指定范围的随机实数 |
bernoulli_distribution |
类名 对象名 |
指定概率的随机布尔值(伯努利分布) |
- uniform distribution就是一致分布、均匀分布的意思,uniform这里是 adj.一致的
- 随机数分布类是一个需要随机数引擎类的支持才能运行的类
- 它能根据用户的需求利用随机数引擎生成符号条件的随机数,例如某一区间、某一概率分布的随机数。
使用方法
1. 创建 unsigned
类型随机数
default_random_engine
,定义的调用运算符返回随机的 unsigned
类型的值
#include <iostream>
#include <random>
using namespace std;
int main()
{
default_random_engine e;
for(int i = 0; i < 10; i++)
cout<< e() << endl;
return 0;
}
2. 创建指定范围的随机整数
uniform_int_distribution
,模板类,模板参数为随机数类型。
- 模板参数只能是int、unsigned、short、unsigned short、long、unsigned long、long long、unsigned long long中的一种。
- 构造函数接受两个值,表示随机数的分布范围,是闭区间
#include <iostream>
#include <random>
using namespace std;
int main()
{
default_random_engine e;
uniform_int_distribution<unsigned> u(0,9);
for(int i = 0; i < 10; i++)
cout << u(e) << endl;
return 0;
}
3. 创建指定范围的随机实数
uniform_real_distribution
,模板类,参数表示随机数类型
- 可选类型有float、double、long double
- 构造函数接受两个值,表示随机数的分布范围,是闭区间
#include <iostream>
#include <random>
using namespace std;
int main()
{
default_random_engine e;
uniform_real_distribution<double> u(0,9);
for(int i = 0; i < 10; i++)
cout << u(e) << endl;
return 0;
}
4. 创建服从0-1分布的随机数
bernoulli_distribution
意为:伯努利分布即0-1分布。
- 不是模板类。
- 构造函数只有一个参数,表示该类返回true的概率,该参数默认为0.5,即返回true和false的概率相等
#include <iostream>
#include <random>
using namespace std;
int main()
{
default_random_engine e;
bernoulli_distribution b;
for(int i = 0; i < 10; i++)
cout << b(e) << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App