当前位置: 首页 > news >正文

【C++学习笔记】伪随机数生成

1.1 底层原理与细节

伪随机数生成在游戏、仿真和加密中有广泛应用。C++11的<random>库取代了不可靠的rand(),提供了基于数学算法的随机数引擎(如std::mt19937,梅森旋转算法)和分布类。

  • 引擎

    • 伪随机数生成器(如std::mt19937,梅森旋转算法),可生成高质量随机序列。

    • 非确定性引擎(如std::random_device,依赖系统熵源,用于种子初始化)。

    • std::random_device rd;  // 非确定性种子源
      std::mt19937 gen(rd()); // 使用种子初始化Mersenne Twister引擎
  • 分布:如std::uniform_int_distribution,通过数学变换将引擎输出映射到均匀分布区

    • std::uniform_int_distribution<int> dist(1, 6); // 1到6的均匀整数

    • std::normal_distribution<double> dist(0.0, 1.0); // 均值为0,标准差为1的正态分布

    • std::bernoulli_distribution dist(0.3); // 成功概率0.3的伯努利分布

底层实现避免了全局状态(如rand()的静态种子),支持线程安全和可重现性。

1.2 小案例:高质量随机数生成

#include <iostream>
#include <random>int main() {std::random_device rd;  // 硬件熵源种子std::mt19937 gen(rd()); // 梅森旋转引擎std::uniform_int_distribution<int> dist(1, 10); // 均匀分布[1, 10]std::cout << "5个随机数: ";for (int i = 0; i < 5; ++i) {std::cout << dist(gen) << " ";}std::cout << std::endl;return0;
}

2 demo

生成浮点数

std::uniform_real_distribution<double> dist(0.0, 1.0);
double val = dist(gen); // [0,1)区间的浮点数

生成非均匀分布

std::normal_distribution<double> nd(5.0, 2.0); // 均值5,标准差2
double x = nd(gen);

离散分布

std::discrete_distribution<int> dist{1, 2, 3}; // 概率权重1:2:3
int index = dist(gen); // 返回0/1/2,概率分别为1/6, 2/6, 3/6

http://www.dtcms.com/a/460837.html

相关文章:

  • Unity笔记(十二)——角色控制器、导航寻路系统
  • 关于嵌入式硬件需要了解的基础知识
  • 个人电脑做服务器网站目录型搜索引擎有哪些
  • 从赌场到AI:期望值如何用C++改变世界?
  • H3C网络设备 实验三: 搭建两个局域网,使两个局域网相互通信(路由器,自动分配ip,DHCP协议)
  • 【源码+文档+调试讲解】商品进销存管理系统SpringBoot016
  • 制造业中的多系统困境,如何通过iPaaS“破解”
  • CryptoJs 实现前端 Aes 加密
  • Dockerfile 应用案例-搭建Nginx镜像、部署扫雷、部署可道云平台
  • 文档抽取技术作为AI和自然语言处理的核心应用,正成为企业数字化转型的关键工具
  • MySQL 数据监控平台
  • 高并发内存池(七):大块内存的申请释放问题以及配合定长内存池脱离使用new
  • 可以为自己的小说建设网站企业官方网站格式
  • 学做静态网站商城设计app网站建设
  • 【Linux系统】线程安全与死锁问题
  • 分布式锁:Redisson的公平锁
  • 精密牙挺在牙齿脱位中的力学控制原理
  • 移动办公型网站开发温州做网站技术员
  • 【SpringAI】第六弹:深入解析 MCP 上下文协议、开发和部署 MCP 服务、MCP 安全问题与最佳实践
  • Unreal开发痛点破解!GOT Online新功能:Lua全监控 + LLM内存可视化!
  • 节后变电站如何通过智能在线监测系统发现「积劳成疾」的隐患?
  • 基于vscode在WSL中配置PlatformIO开发环境
  • C#基础15-线程安全集合
  • 门诊场景评测深度分析报告:医生-病人-测量代理交互对诊断影响机制研究(下)
  • USCTNET:一种用于物理一致性高光谱图像重建的深度展开核范数优化求解器
  • 为什么我的网站没有百度索引量南充市网站建设
  • 常规线扫描镜头有哪些类型?能做什么?
  • 企业级 K8s 深度解析:从容器编排到云原生基石的十年演进
  • 网络产品报价指南--S5735系列交换机
  • 笔记 | 内网服务器通过wifi穿透,设置流量走向