模拟生成高斯随机数序列

模拟和生成高斯随机数序列(服从标准正态分布的随机变量)

Box-Muller 法 & Marsaglia 极坐标法

Box-Muller:使两个独立的均匀分布生成一个高斯分布。

Box-Muller方法的基本思想是利用两个独立的均匀分布随机变量的关系来生成高斯分布的随机数,用于从均匀分布的随机数生成服从标准正态分布的随机数序列:Z_1\sim N(0,1)

以下是Box-Muller转换的步骤:

生成两个独立的均匀分布随机变量: U_1U_2 ,范围在 (0,1) 之间。计算两个标准正态分布的随机变量 Z_0Z_1

\begin{cases}Z_0=\sqrt{-2\mathrm{ln}\left(U_1\right)}\mathrm{cos}\left(2\pi U_2\right)\\Z_1=\sqrt{-2\mathrm{ln}\left(U_1\right)}\mathrm{sin}\left(2\pi U_2\right)&\end{cases}

通过这个过程,可以从两个独立的均匀分布随机变量生成两个服从标准正态分布的随机变量, Z_0Z_1 即为两个服从标准正态分布的随机变量:Z_1\sim N(0,1)\ ,{\ Z}_2\sim N(0,1)

如果需要生成特定均值和标准差的正态分布随机数:X\sim N(\mu,\sigma^2) ,则将生成的标准正态分布随机数进行线性变换:X=\mu+\sigma\cdot Z

Box-Muller转换的优点在于简单易用,并且生成的结果服从标准正态分布,适用于模拟和生成高斯随机数序列。对于Box-Muller转换,Z_0Z_1 的公式是通过将两个独立的均匀分布随机变量 U_1 和 U_2 转换为标准正态分布的,确保它们满足标准正态分布的性质:Z_1\sim N(0,1)\ ,{\ Z}_2\sim N(0,1)

Marsaglia:

生成两个独立的均匀分布随机变量 U_1 和 U_2 ,范围在 (-1,1) 之间。

计算两个均匀分布随机变量的平方和:S=U_1^2+U_2^2

如果 S 不满足 0<S<1,则需要重新生成 U_1 和 U_2 ,直到 S 满足 0<S<1

计算变换后的随机变量:

\begin{cases}Z_0=U_1\sqrt{\frac{-2\text{l}\operatorname{n}(S)}{S}}\\\\Z_1=U_2\sqrt{\frac{-2\text{l}\operatorname{n}(S)}{S}}\end{cases}

这样生成的 Z_0Z_1 也是服从标准正态分布的随机变量。

两者的优缺点:

Box-Muller转换和Marsaglia极坐标法都是生成标准正态分布随机数的常用方法,但它们在不同情况下有不同的优劣势和应用场景。

Box-Muller转换

优点

  1. 简单易懂:算法相对简单,容易理解和实现。
  2. 确定性计算:每次都能生成两个独立的标准正态分布随机数,无需反复试验。

缺点

  1. 对数和三角函数计算开销大:使用了对数和三角函数,这些计算在一些场合可能会比较耗时。

适用场景

  • 学习和教学:因为其简单性,Box-Muller转换常用于教学和学习场合。
  • 对性能要求不高的场合:适合那些对计算速度要求不高的场合,比如一些模拟实验或随机数生成器的简单应用。

Marsaglia极坐标法

优点

  1. 计算效率高:没有对数和三角函数计算,适合对计算效率要求较高的应用场合。
  2. 不需要两个均匀分布随机变量都在 (0,1) 之间:可以使用更广泛的均匀分布随机变量范围。

缺点

  1. 需要反复试验:当生成的 S不在 (0,1) 之间时,需要重新生成随机数,这可能导致额外的计算开销。

适用场景

  • 高性能要求的应用:如大型模拟、实时系统或需要大量标准正态分布随机数的场合。
  • 需要快速生成高质量随机数的应用:如金融模型、科学计算等。

总结

  • Box-Muller转换:适合简单场合,对计算性能要求不高的应用。
  • Marsaglia极坐标法:适合对性能有较高要求的场合,需要生成大量高质量标准正态分布随机数的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu与Windows通过WIFI与以太网口共享网络,Ubuntu与Windows相互ping通,但ping百度失败

Linux开发板&#xff08;正点原子阿尔法_IMX6U&#xff09;与Ubuntu的文件传输SCP 报错 SSH: no matching host key type found. Their offer: ssh-rsa-CSDN博客 前面的文章提到了如何将Ubuntu与Windows通过WIFI共享网络给以太网&#xff0c;从而实现Linux开发板、Ubuntu、Win…

香港优才计划续签难吗?一次性说清楚优才续签要求,不在香港居住也能续签成功!

香港优才计划续签难吗&#xff1f;这个问题对考虑申请优才的人来说&#xff0c;还是挺重要的。我们申请优才&#xff0c;最关注的2个问题&#xff0c;一个是获批&#xff0c;还有一个就是续签了。 毕竟我们费那么大功夫申请优才&#xff0c;可不只是为了一个为期3年的香港临时…

如何分析软件测试中发现的Bug!

假如你是一名软件测试工程师&#xff0c;每天面对的就是那些“刁钻”的Bug&#xff0c;它们像是隐藏在黑暗中的敌人&#xff0c;时不时跳出来给你一个“惊喜”。那么&#xff0c;如何才能有效地分析和处理这些Bug&#xff0c;让你的测试工作变得高效且有趣呢&#xff1f;今天我…

MongoDB - 集合和文档的增删改查操作

文章目录 1. MongoDB 运行命令2. MongoDB CRUD操作1. 新增文档1. 新增单个文档 insertOne2. 批量新增文档 insertMany 2. 查询文档1. 查询所有文档2. 指定相等条件3. 使用查询操作符指定条件4. 指定逻辑操作符 (AND / OR) 3. 更新文档1. 更新操作符语法2. 更新单个文档 updateO…

web安全及内网安全知识

本文来源无问社区&#xff08;wwlib.cn&#xff09;更多详细内容可前往观看http://www.wwlib.cn/index.php/artread/artid/7506.html Web安全 1、sql注入 Web程序中对于用户提交的参数未做过滤直接拼接到SQL语句中执行&#xff0c;导致参数中的特殊字符破坏了SQL语句原有逻…

简述多云互联原理,客户公私云池互通的产品是什么?

多云互联原理基于企业或组织使用多个不同的云服务提供商的基础设施和服务&#xff0c;以实现最佳的运营效率、弹性和成本效益。这种策略允许用户避免供应商锁定&#xff0c;分散风险&#xff0c;并利用不同云服务商的特定优势&#xff0c;例如价格、地理位置、功能或性能。 多云…

jvm 07 GC算法,内存池,对象内存分配

01 垃圾判断算法 1.1引用计数算法 最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数&#xff0c;每多一个其他对象引用&#xff0c;计数1&#xff0c; 当引用失效时&#xff0c;计数-1&#xff0c;如果计数0&#xff0c;表示没有其他对象引用&#xff0c;…

51单片机-第一节-LED和独立按键

一、点亮LED&#xff1a; 首先包含头文件 <REGX52.H> 随后令P2为0xFE。(此时二进制对应1111 1110&#xff0c;为0 的LED亮&#xff0c;故八个灯中的最后一个亮起)。 注&#xff1a;P2为控制LED的8位寄存器。 void main() {P2 0xFE;//1111 1110while(1){} } 二、L…

递归 汉诺塔-java

汉诺塔传说&#xff1a; 汉诺塔&#xff08;又称河内塔&#xff09;问题是源于印度一个古老传说的益智玩具。 大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一个柱子从下往上按照大小顺序摞着64片圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱…

跨境电商自养号测评干货分享:从环境搭建到安全养号

跨境电商测评&#xff08;补单&#xff09; 测评补单这个词对于大部分跨境卖家来说都很熟悉&#xff0c;因为补单对于卖家来说算是一种低成本&#xff0c;高回报的推广营销方式&#xff0c;对于商品流量&#xff0c;转化率&#xff0c;关键词质量分&#xff0c;链接权重都起到…

ACL 2024 Accepted Paper 浅浅分析

7月7日&#xff0c;晴。 ACL 2024的接受论文列表终于姗姗来迟&#xff0c;全网没有搜到相关解析&#xff0c;那我只能先吃个螃蟹了。 借助ChatGPT的辅助编程&#xff0c;我对于其论文和作者进行了一些浅浅的分析&#xff0c;主要从词云、主题类型、作者发表数量3个方面对于主…

Node.js如何在Windows安装?

文章目录 主要特点&#xff1a;使用场景&#xff1a;安装方法验证是否安装成功 Node.js 是一个开源、跨平台的JavaScript运行环境&#xff0c;由Ryan Dahl于2009年创建。它允许开发者在服务器端运行JavaScript代码。Node.js 基于Chrome V8 JavaScript引擎构建&#xff0c;其设计…

CTF php RCE(三)

0x07 日志文件包含 判断类型 使用kali curl -I urlF12 打开F12开发者工具&#xff0c;选中之后F5刷新查看server类型即可 配置文件 直接包含或者访问如果有回显就是&#xff0c; NGINX&#xff1a;NGINX 的配置文件通常位于 /etc/nginx/ 目录下&#xff0c;具体的网站配…

2024.7.10作业

完成学生管理系统 1> 使用菜单完成 2> 有学生的信息录入功能&#xff1a;输入学生个数&#xff0c;并将学生的姓名、分数录入 3> 查看学生信息&#xff1a;输出所有学生姓名以及对应的分数 4> 求出学习最好的学生信息&#xff1a;求最大值 5> 按姓名将所有…

北斗GPS天线使用技巧与性能对比

北斗GPS天线使用中注意的问题 多系统兼容性&#xff1a;确保天线不仅能接收北斗信号&#xff0c;还能同时接收其他GNSS系统&#xff08;如GPS、GLONASS、Galileo&#xff09;的信号&#xff0c;以提高定位精度和可靠性。 信号频率选择&#xff1a;根据应用需求选择合适的信号…

[Python学习篇] Python异常

什么是异常&#xff1f; 异常&#xff08;Exception&#xff09;是指在程序执行过程中发生的错误事件&#xff0c;它会中断程序的正常执行流程。异常可以由程序中的错误引发&#xff0c;也可以通过主动抛出异常来处理特殊情况。Python 使用异常处理机制来捕获和处理这些错误&am…

新手教学系列——MongoDB聚合查询的进阶用法

引言 MongoDB的聚合查询是其最强大的功能之一。无论是汇总、平均值、计数等标准操作,还是处理复杂的数据集合,MongoDB的聚合框架都能提供高效且灵活的解决方案。本文将通过几个实例,详细讲解如何在实际项目中使用MongoDB进行聚合查询。 标准应用:汇总、平均值、计数等 在…

【C语言】字符函数和字符串函数的介绍和模拟实现

介绍处理字符和字符串的库函数的使用和注意事项 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 0. 前言 C语言中对字符和字符串的处理很是频繁&#xff0c;但是C语言本身是没有字符串类型的&am…

从0开始的STM32HAL库学习2

外部中断(HAL库GPIO讲解) 今天我们会详细地学习STM32CubeMX配置外部中断&#xff0c;并且讲解HAL库的GPIO的各种函数。 准备工作&#xff1a; 1、STM32开发板&#xff08;我的是STM32F103C8T6&#xff09; 2、STM32CubeMx软件、 IDE&#xff1a; Keil软件 3、STM32F1xx/ST…

Jenkins设置开机自启(以war包方式启动jenkins)

配置环境&#xff1a;Centos7.6/Jenkins 2.452.2/jdk-21.0.3 jenkins启动命令&#xff1a; nohup java -jar jenkins.war > /dev/null 2>&1 & 1、创建sh脚本文件 # jenkins.war包&#xff0c;放在了/root/software目录 cd /root/software vim jenkins-start.sh …