蒙德卡罗方法python ---小白的整理

2024-01-20 06:18

本文主要是介绍蒙德卡罗方法python ---小白的整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                      **蒙特卡罗方法python**

蒙德卡罗方法是一种通过概率来得到近似解的方法

一 .蒙德卡罗方法来计算圆周率

1.算法思路解释如下:

  1. 圆形面积和正方形面积比例*4即等于圆周率
  2. 假设有一块边长为2的正方形木板,上面画一个单位圆,随意往木板上扔飞镖,落点(x,y)必定在木板上。
  3. 在扔得足够多的情况下,落在单位圆和落在木板上飞镖的次数的比例就等于单位圆和木板的面积之比。综上我们很容易理解随着投掷次数的增加,这个数值*4会无线接近于圆周率。

根据算法原理,我们使用pycharm编写程序利用蒙德卡罗方法来计算圆周率
参考代码块如下

from random import randomtimes =int(input('请输入投掷飞镖次数:'))
hits = 0
for i in range(times):x = random()y = random()if x*x + y*y<= 1:hits += 1
print(4.0 *hits/times)

由于我是新手,下面便是我对代码块的逐条解析

  • from random import random从random库中引入random模块,random模块时python自带的模块,用于生成随机数
  • times =int(input('请输入投掷飞镖次数:'))int()函数用于将一个字符串或数字转换成整型

#默认返回0,如果没有参数传递
int()
0
#如果转换的是float函数,那么转换的结果是向0的方向靠近,而不是四舍五入
int(3.6)
3
#负数取大
int(-3.6)
-3
#如果指定了base参数,那么第一个参数必须是字符类型
int(‘11’,base=2)
3 base=2为 二进制
#如果不指定,则认为字符是十进制数据
int(‘101’)
101

2我们进一步使用matplotlib画图

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle# 投点次数
n = int(input('请输入投点次数:'))
# 在正方形区域内随机投点,均匀分布
x = np.random.uniform(-1, 1, n)
y = np.random.uniform(-1, 1, n)
# 计算 点到圆心的距离
d = np.sqrt(x**2 + y**2)
# 统计 落在圆内的点的数目
hits = sum(np.where(d < 1, 1, 0))
# 计算 pi 的近似值(蒙特卡罗方法:用概率统计值去近似真实值)
pi = 4 * hits / n
print('圆周率: ', pi)"""
画图
"""
#变量fig表示整张图片,ax表示图片中的各个图表
#创建自定义图像
fig = plt.figure()
# 其中,参数111的意思是:将画布分割成1行1列,图像画在从左到右从上到下的第1块
ax = fig.add_subplot(111)
ax.plot(x, y,'ro',markersize = 1)
plt.axis('equal') # 防止图像变形
circle = Circle(xy=(0,0), radius=1, alpha=0.5)
ax.add_patch(circle)
plt.show()

在这里插入图片描述
在这里插入图片描述

二.使用蒙特卡罗计算定积分

  • 求函数 y=x^2 在[0,1]内的定积分
import numpy as np
import matplotlib.pyplot as pltdef f(x):return x**2
# 投点次数
n = int(input('任意输入投点次数:'))
# 在矩形区域内随机投点
x = np.random.uniform(0, 1, n)
y = np.random.uniform(0, 1, n)
# 统计落在函数 y=x^2图像下方的点的数目
hits = sum(np.where(y < f(x), 1, 0))
# 计算定积分的近似值(蒙特卡罗方法:用统计的概率比值去近似真实值)
integral = hits / n
print('x^2在[0,1]的定积分: ', integral)
"""
画图
"""
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(x, y,'ro',markersize = 1)
# 防止图像变形
plt.axis('equal')
axes.plot(np.linspace(0, 1, 10), f(np.linspace(0, 1, 10)), 'b-')
plt.show()

在这里插入图片描述
在这里插入图片描述

这篇关于蒙德卡罗方法python ---小白的整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

mysql删除无用用户的方法实现

《mysql删除无用用户的方法实现》本文主要介绍了mysql删除无用用户的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 1、删除不用的账户(1) 查看当前已存在账户mysql> select user,host,pa

电脑提示msvcp90.dll缺少怎么办? MSVCP90.dll文件丢失的修复方法

《电脑提示msvcp90.dll缺少怎么办?MSVCP90.dll文件丢失的修复方法》今天我想和大家分享的主题是关于在使用软件时遇到的一个问题——msvcp90.dll丢失,相信很多老师在使用电脑时... 在计算机使用过程中,可能会遇到 MSVCP90.dll 丢失的问题。MSVCP90.dll 是 Mic

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

详解如何使用Python提取视频文件中的音频

《详解如何使用Python提取视频文件中的音频》在多媒体处理中,有时我们需要从视频文件中提取音频,本文为大家整理了几种使用Python编程语言提取视频文件中的音频的方法,大家可以根据需要进行选择... 目录引言代码部分方法扩展引言在多媒体处理中,有时我们需要从视频文件中提取音频,以便进一步处理或分析。本文

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二