[C++] C++生成随机数
一、简介
在C语言
中常使用srand()
+random()
的方式生成随机数,该方式并不是一个很好的随据说生成方法,一方面是因为其生成的随机数质量较低,另一方面其随机数范围也有所限制。在C++11
中推荐使用随机数引擎的方式生成随机数。
如何高效得生成高质量得随机数(甚至需要满足指定分布)是一个复杂的问题,本文只给出C++11
中常用的用于生成均匀分布、正态分布等特定分布的随机数代码,并不对随机数生成理论进行解释。
二、代码示例
1. 均匀分布uniform distribution
#include <iostream>
#include <random>int main()
{std::random_device rd; // 生成随机数种子std::mt19937 gen(rd()); // 定义随机数生成引擎std::uniform_int_distribution<> distrib_int(1, 6); // 定义随机数分布,生成在[1,6]之间的的均匀分布整数for (int n = 0; n != 10; ++n){std::cout << distrib_int(gen) << ' ';}std::cout << '\n';std::uniform_real_distribution<> distrib_real(1.0, 6.0); // 定义随机数分布,生成在[1.0,6.0]之间的的均匀分布实数for (int n = 0; n != 10; ++n){std::cout << distrib_real(gen) << ' ';}std::cout << '\n';return 0;
}
2. 正态分布Normal distribution
生成其他分布的随机数跟生成均匀分布的随机数类似,只需要改变随机数生成器
即可。生成均值为5.0
,标准差为2.0
的随机数可以使用以下随机数生成器:
std::normal_distribution distrib_normal(5.0, 2.0);
3. 泊松分布Poisson distribution
std::poisson_distribution<> d(4);
4. 离散采样分布Discrete distribution(整数)
// 假设存在4种事件,
// 事件1发生的概率为 40/(40+10+10+40),
// 事件2发生的概率为 10/(40+10+10+40),
// 事件3发生的概率为 10/(40+10+10+40),
// 事件4发生的概率为 40/(40+10+10+40),
// 那么,采样四种事件的随机数生成器如下:
std::discrete_distribution<> d({40, 10, 10, 40});
三、参考
[1]. cppreference Standard library header <random>.
相关文章:
[C++] C++生成随机数
一、简介 在C语言中常使用srand()random()的方式生成随机数,该方式并不是一个很好的随据说生成方法,一方面是因为其生成的随机数质量较低,另一方面其随机数范围也有所限制。在C11中推荐使用随机数引擎的方式生成随机数。 如何高效得生成高质…...

web开发——前端html、css、JavaScript学习总结(持续更新中.......)
目录模版 1 html:结构标签/属性文本标记: mark文本设置:删除线del / 下划线ins/ 加粗b / 强调的文本em / 重要的文本 strong超链接: a联系信息: addressdiv 定义文档中的分区或节: div行元素:spanhtml结构: main / section / articlenav表格:table html中各种标签/属性的英文扩…...
LeetCode 2044.统计按位或能得到最大值的子集数目
给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,则认为数组 a 是数组 b 的一个 子集…...

Selenium自动化测试细节讲解
与以前瀑布式开发模式不同,现在软件测试人员具有使用自动化工具执行测试用例套件的优势,而以前,测试人员习惯于通过测试脚本执行来完成测试。 但自动化测试的目的不是完全摆脱手动测试,而是最大程度地减少手动运行的测试。自动化…...

强化学习工具箱(Matlab)
1、Get Started 1.1、MDP环境下训练强化学习智能体 MDP环境如下图 每个圆圈代表一个状态每个状态都有上或下的选择智能体从状态 1 开始智能体接收的奖励值为图中状态转移的值训练目标是最大化累计奖励 (1)创建 MDP 环境 创建一个具有 8 个状态和 2 …...

程序人生 - 爬虫者,教育也!
作为一个站长,你是不是对爬虫不胜其烦?爬虫天天来爬,速度又快,频率又高,服务器的大量资源被白白浪费。 看这篇文章的你有福了,我们今天一起来报复一下爬虫,直接把爬虫的服务器给干死机。 本文有…...

OKLink2月安全月报| 2起典型漏洞攻击案例分析
在本月初我们发布的2024年2月安全月报中提到,2月全网累计造成损失约1.03亿美元。其中钓鱼诈骗事件损失占比11.76%。 OKLink提醒大家,在参与Web3项目时,应当仔细调研项目的真实性、可靠性,提升对钓鱼网站和风险项目的甄别能力&…...

可视化表单流程编辑器为啥好用?
想要提升办公率、提高数据资源的利用率,可以采用可视化表单流程编辑器的优势特点,实现心中愿望。伴随着社会的进步和发展,提质增效的办公效果一直都是很多职场办公团队的发展需求,作为低代码技术平台服务商,流辰信息团…...
【代码】Android|获取存储权限并创建、存储文件
版本:Android 11及以上,gradle 7.0以上,Android SDK > 29 获取存储权限 获取存储权限参考:Android 11 外部存储权限适配指南及方案,这篇文章直接翻到最下面,用XXPermissions框架。它漏了这个框架的使用方…...

每日一练 | 华为认证真题练习Day196
1、在如图所示的网络中,三台交换机运行RSTP,配置情况如图所示 根据图中配置情况判断根交换机为 A. SWA B. SWB C. SWC D. 无法确定 2、如图所示,在RT1路由器上配置OSPF多进程,其中RT1的进程100通过骨干区域和RT2建立OSPF邻居&…...

如何在Linux本地搭建Tale网站并实现无公网ip远程访问
文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale,Tale…...

论哪个行业官网颜值普遍较高,装修设计第二,无人敢称第一。
装饰设计公司官网普遍颜值较高的原因主要包括以下几点: 1. 美学要求: 装饰设计公司本身就是从事美学和艺术的行业,他们对于视觉效果和美感有着较高的要求,因此他们的官网在设计上往往会更加注重颜值。 2. 品牌形象:…...

Elastic Stack--08--SpringData框架
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringData[官网: https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…...

华为OD机试 - 模拟数据序列化传输(Java JS Python C C++)
题目描述 模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程 编码前数据格式为 [位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer / String / Compose(Compose的数据类型表示该存储的数据也需要编码)编码后数…...

使用Tokeniser估算GPT和LLM服务的查询成本
将LLM集成到项目所花费的成本主要是我们通过API获取LLM返回结果的成本,而这些成本通常是根据处理的令牌数量计算的。我们如何预估我们的令牌数量呢?Tokeniser包可以有效地计算文本输入中的令牌来估算这些成本。本文将介绍如何使用Tokeniser有效地预测和管…...
2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)
摘要: 本文详细介绍了如何使用Docker部署一个多容器DjangoVue项目,包括nginx、uwsgi和mysql。文章内容涵盖了基础知识回顾、需求分析、设计方案、实现步骤、技巧与实践、性能优化与测试、常见问题与解答以及结论与展望。 阅读时长:约60分钟…...

Vue 中的 key:列表渲染的秘诀
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
Linux系统架构----nginx的服务基础
一.Nginx的概述 Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx稳定性高,而且系统资源消耗少Nginx相对于Apache主要处理静态请求,而apache主要处理动态请求Nginx是一款轻量级的Web 服务器/反向代理服务…...

项目管理工具及模板(甘特图、OKR周报、任务管理、头脑风暴等)
项目管理常用模板大全: 1. 项目组OKR周报 2. 项目组传统周报工作法 3. 项目甘特图 4. 团队名单 5. 招聘跟进表 6. 出勤统计 7. 年度工作日历 8. 项目工作年计划 9. 版本排期 10. 项目组任务管理 11. 项目规划模板 12. 产品分析报告 13. 头脑风暴 信息化项目建设全套…...

MySQL--索引底层数据结构详解
索引是什么? 索引是帮助MySQL高效获取数据的排好序的数据结构,因此可知索引是数据结构。 概念很抽象,但是类比生活中的例子就很容易理解,比如一本厚厚的书,我们想取找某一小节,我们可以根据目录去快速找到…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...