Python:利用蒙特卡洛方法求解圆周率

1. 蒙特卡洛方法概述

  • 蒙特卡洛方法是一种以概率统计理论为指导的数值计算方法。它通过随机抽样来求解问题,在许多复杂的数学、物理等领域都有广泛的应用。其基本思想是利用随机数来模拟实验,通过大量重复的实验得到近似的结果。

2. 利用蒙特卡洛方法求解圆周率的原理

  • 考虑一个单位正方形(边长为1),其内部有一个半径为1的四分之一圆(因为单位圆的半径为1,我们只考虑第一象限的部分)。
  • 设这个四分之一圆的方程为 y = 1 − x 2 ( 0 ≤ x ≤ 1 ) y = \sqrt{1 - x^{2}}(0\leq x\leq1) y=1x2 (0x1)
  • 根据几何概率知识,在单位正方形内随机地投点(x,y),点落在四分之一圆内的概率P等于四分之一圆的面积与单位正方形面积之比。
  • 单位正方形的面积为 1 × 1 = 1 1\times1 = 1 1×1=1四分之一圆的面积为 1 4 π r 2 = π 4 ( 这里 r = 1 ) \frac{1}{4}\pi r^{2}=\frac{\pi}{4}(这里r = 1) 41πr2=4π(这里r=1)所以点落在四分之一圆内的概率 P = π 4 P=\frac{\pi}{4} P=4π

3. 具体求解步骤

  • 步骤一:生成随机点
    • 使用计算机程序生成大量的随机点(x,y),其中x和y的取值范围都是[0,1]。通常可以利用编程语言中的随机数生成函数来实现。例如,在Python中,可以使用random模块来生成[0,1]之间的随机数。
  • 步骤二:判断点是否在圆内
    • 对于每个生成的随机点(x,y),判断它是否在四分之一圆内。判断的方法是根据圆的方程 y ≤ 1 − x 2 y\leq\sqrt{1 - x^{2}} y1x2 如果满足这个不等式,就说明点在圆内。
  • 步骤三:计算圆周率的近似值
    • 设总共生成了(N)个随机点,其中有(M)个点落在四分之一圆内。根据概率的定义, P = M N P=\frac{M}{N} P=NM 又因为 P = π 4 P = \frac{\pi}{4} P=4π 所以 π ≈ 4 M N \pi\approx\frac{4M}{N} πN4M

4. 示例代码(Python)

import randomN = 1000000  # 生成的随机点数量
M = 0
for i in range(N):x = random.random()y = random.random()if y <= (1 - x * x)**0.5:M += 1
pi_approx = 4 * M / N
print("圆周率的近似值为:", pi_approx)

5. 误差分析

  • 随着随机点数量N的增加,得到的圆周率近似值会越来越准确。这是因为根据大数定律,当N趋向于无穷大时,频率 M N \frac{M}{N} NM会趋近于概率P。但是在实际计算中,由于计算机生成的随机数是伪随机数,并且计算资源有限,所以仍然会存在一定的误差。不过通过增加随机点的数量,可以将误差控制在可接受的范围内。

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

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

相关文章

leetcode212. 单词搜索 II

给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元格 内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一…

容器化技术

文章目录 虚拟化容器容器隔离实现隔离文件 chroot隔离访问 namespace隔离资源 cgroups Dockerkubernetes 虚拟化容器 容器的首要目标是让软件分发部署过程从传统的发布安装包、靠人工部署转变为直接发布已经部署好的、包含整套运行环境的虚拟计划镜像。 一个计算机软件能够给正…

【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析

目录 一、前言 二、Spring Boot 简介 三、Spring Boot 核心模块 四、Spring Boot 项目实战&#xff1a;构建一个简单的 RESTful API 1. 创建 Spring Boot 项目 2. 配置数据库 3. 创建实体类 4. 创建 JPA 仓库接口 5. 创建服务层 6. 创建控制器层 7. 测试 API 8. 运…

算法刷题Day23:BM60 括号生成

题目链接 描述&#xff1a;给出n对括号&#xff0c;请编写一个函数来生成所有的由n对括号组成的合法组合。 例如&#xff0c;给出n3&#xff0c;解集为&#xff1a; “((()))”, “(()())”, “(())()”, “()()()”, “()(())” 思路&#xff1a; 回溯左子树不断添加‘&#…

SAST静态应用安全测试常见的编码规则

行业优先级难易度标准标准名称数量 军工12易GJB 5369:2005GJB_5369&#xff08;国家军用标准航天型号软件C语言可靠性编程规范&#xff09;138军工行业最早的C语言编码标准&#xff0c;强制性4易GJB 8114:2013GJB_8114&#xff08;国家军用标准C/C语言可靠性编程规范&#xff…

土地档案管理关系[源码+文档]

目录 摘 要 Abstract 1 绪论 1.1 可行性研究编写目的 1.2 项目背景 1.3 土地管理现状 1.4 土地档案管理研究方向 1.5 项目目标 1.6 项目设计原则 1.6.1 实用性原则 1.6.2 经济性原则 1.6.3 合法性原则 2 相关技术介绍 2.1 三层架构的选择 2.2 编程…

使用C语言编写UDP循环接收并打印消息的程序

使用C语言编写UDP循环接收并打印消息的程序 前提条件程序概述伪代码C语言实现编译和运行C改进之自由设定端口注意事项在本文中,我们将展示如何使用C语言编写一个简单的UDP服务器程序,该程序将循环接收来自指定端口的UDP消息,并将接收到的消息打印到控制台。我们将使用POSIX套…

iClient3D for Cesium 实现限高分析

作者&#xff1a;gaogy 1、背景 随着地理信息技术的发展&#xff0c;三维地球技术逐渐成为了许多领域中的核心工具&#xff0c;尤其是在城市规划、环境监测、航空航天以及军事领域。三维地图和场景的应用正在帮助人们更加直观地理解空间数据&#xff0c;提供更高效的决策支持。…

Audiocraft智能音频和音乐生成工具部署及使用

1、概述 Facebook开源了一款名为AudioCraft的AI音频和音乐生成工具。 该工具可以直接从文本描述和参考音乐生成高质量的音频和音乐。AudioCraft包含MusicGen、AudioGen和EnCodec三个模型&#xff0c;分别实现音乐生成、音频生成和自定义音频模型构建。 2、项目地址 https://…

【0368】Postgres内核 清除所有旧的 relcache cache files ( 11 )

上一篇: 【0367】Postgres内核 XLOG record 中 main data 数据是什么 ? ( 10 ) 文章目录 1. 移除 old relcache 缓存文件1.1 删除 init files1.1.1 移除 global 下的 init files1.1.2 扫描 default tablespace1. 移除 old relcache 缓存文件 清除所有旧的 relcache 缓存文…

vulnhub靶场【DriftingBlues】之7

前言 靶机&#xff1a;DriftingBlues-6&#xff0c;IP地址192.168.1.65 攻击&#xff1a;kali&#xff0c;IP地址192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24 信息收集 使用nmap扫描端口 SSH服务&…

SCAU期末笔记 - Linux系统应用与开发教程样卷解析(2024版)

我真的不理解奥&#xff0c;为什么会有给样卷不自带解析的&#xff0c;对答案都没得对&#xff0c;故整理一篇 样卷1 一、选择题 1、为了遍历shell脚本调用时传入的参数&#xff0c;需要在shell脚本中使用_____。 A.$#表示参数的个数B.S表示所有参数C.$0表示脚本名D.$1表示…

spring\strust\springboot\isp前后端那些事儿

后端 一. 插入\更新一条数据&#xff08;老&#xff09; Map<String, Object> parameterMap MybatisUtil.initParameterSave("Send_ProjectFrozenLog", sendProjectFrozenLog); commonMapper.insert(parameterMap);parameterMap MybatisUtil.initParameter…

对golang的io型进程进行off-cpu分析

背景&#xff1a; 对于不能占满所有cpu核数的进程&#xff0c;进行on-cpu的分析是没有意义的&#xff0c;因为可能程序大部分时间都处在阻塞状态。 实验例子程序&#xff1a; 以centos8和golang1.23.3为例&#xff0c;测试下面的程序&#xff1a; pprof_netio.go package m…

CSS Grid 布局:属性及使用详解

CSS Grid 布局&#xff1a;属性及使用详解 一、CSS Grid 布局的基础概念二、主要的 CSS Grid 属性1、display: grid / display: inline-grid声明 Grid 容器2、grid-template-columns / grid-template-rowsGrid 容器中列和行的尺寸3、 grid-template-areas命名布局区域4、gap/ g…

【数学建模】利用Matlab绘图(2)

一、Matlab中plot函数的基本用法 在matlab中&#xff0c;函数的基本用法主要包括以下几种 第一类&#xff1a; plot(X,Y,LineSpec) 第二类&#xff1a; plot(tbl,xvar,yvar) 1.1 第一类 1.1.1x-y坐标 x和y的选择取决于绘图所需的数据类型以及图像的类型。下表列出了几种…

编写工具模块

文章目录 1.新建模块1.新建模块sun-common-tool2.sun-dependencies指定依赖3.sun-common统一管理sun-common-tool子模块4.sun-common-tool的pom.xml5.清除掉创建模块时默认sun-frame对sun-common-tool进行管理 2.常用工具类1.DateUtils.java2.EncodeUtils.java3.IpUtils.java4.…

构建一个rust生产应用读书笔记四(实战3)

从这一节开始&#xff0c;我们将继续完善邮件订阅生产级应用&#xff0c;根据作者的选型sqlx作为数据库操作的类库&#xff0c;它有如下优点&#xff1a; 它旨在提供高效、安全且易于使用的数据库交互体验。sqlx 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL 和 SQLite&…

视频直播点播平台EasyDSS推拉流技术结合无人机推流在道路交通巡检场景中的应用

随着城市化进程的加速&#xff0c;交通网络日益复杂&#xff0c;交通巡检工作面临着前所未有的挑战。传统的巡检方式往往依赖于人工巡查或地面监控设备&#xff0c;但这些方法存在巡检范围有限、效率低下等缺点。 无人机凭借其高空视野、灵活机动、实时监控等优势&#xff0c;…

fastAPI接口(普通流式响应和大模型流式响应)

1. 流式输出和非流失输出&#xff1a; 大模型的流式输出&#xff08;Streaming Output&#xff09;和非流式输出&#xff08;Non-streaming Output&#xff09;是指在生成文本或其他输出时&#xff0c;如何将结果返回给用户或下游系统。 流式输出 (Streaming Output)&#xf…