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;
}
标签:11,int,random,C++,uniform,随机数,distribution,include
From: https://www.cnblogs.com/Critical-Thinking/p/16845446.html