首页 > 编程语言 >C++ 11 random库

C++ 11 random库

时间:2022-10-31 19:22:11浏览次数:37  
标签:11 int random C++ uniform 随机数 distribution include

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

相关文章

  • Qt on Android 开发之 C++与Java 交互
    目录​​简述​​​​Qt引入Android模块​​​​Java示例​​​​Cpp与java交互​​简述我做了一个小例子,来实现了C++与Java之间的交互。该示例是以整形和字符型举例说明,......
  • 完美解决 java: 无效的目标发行版: 11
    1、问题描述经过研究才发现,这是因为作者使用了jdk8进行编译,而试图使用jdk11的功能,这就必然会导致版本问题,因为jdk8支持1-8这个区间的功能,如何解决这个问题呢? image-2......
  • C++ 不知树系列之认识二叉树(顺序、链表存储的实现)
    1.概念什么是二叉树?顾名思义,二叉树指树中的任何一个结点(除叶结点)的子结点不能多于2个。二叉树可分为:一般二叉树。只要符合二叉树的定义便可。满二叉树。满的意......
  • Solr 8.11入门教程(4)中文分词
    中文分词默认对中文分词的效果并不好,我们添加IK分词。下载重新下载:先下载solr8版本对应的ik分词器,分词器GitHub源码地址:https://github.com/magese/ik-analyzer-solr添......
  • 力扣 112. 路径总和
    112.路径总和给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标......
  • grpc demo python客户端 c++服务端
    项目需啊将网站上传的图片传入c++推理引擎,网站使用flask架构,python编写,图片推理引擎是一个单独的server,c++编写,因此用grpc来传输比较合适。理论上来说只要规定好proto文件,......
  • Solr 8.11入门教程(2)创建core
    新建core添加core命令添加使用命令比较简单~$bin/solrcreate-cmytest[core名称]这样就添加完了。CoreAdmin就可以看到了。手动添加手动添加相对复杂一些,需要提......
  • day11-(cookie&&session)
    回顾:response:响应往浏览器写东西响应行操作状态码常用方法:setStatus(intcode):123响应头格式:key:v......
  • Solr 8.11入门教程(2)创建core
    新建core添加core命令添加使用命令比较简单~$bin/solrcreate-cmytest[core名称]这样就添加完了。CoreAdmin就可以看到了。手动添加手动添加相对复杂一些,需要提前创建目......
  • mac版 AutoCAD(LT)安装失败,提示错误“Error 112”的解决方法
    很多网友反映,第一次安装AutoCAD(LT)2022或者2023的时候都能成功,但是有问题卸载后,想要重装时,安装到一定进度后,进度条会回退到0,然后提示安装失败,错误Error112。,这种情况如何......