蒙特卡罗法近似求解圆周率π
发布日期:2021-07-01 03:25:02
浏览次数:2
分类:技术文章
本文共 1136 字,大约阅读时间需要 3 分钟。
文章目录
1. 原理
- 给出 x ∈ [ 0 , 1 ) , y ∈ [ 0 , 1 ) x \in [0,1),y\in[0,1) x∈[0,1),y∈[0,1) 的均匀分布随机点,模拟 t t t 次,落在以 ( 0 , 0 ) (0,0) (0,0) 为圆心,半径 r = 1 r=1 r=1 的圆以内的次数为 c c c
- 当模拟次数足够大时,可以看成面积比 π 4 ≈ c t ⇒ π ≈ 4 c / t \frac{\pi}{4} \approx \frac{c}{t}\Rightarrow \pi \approx 4c/t 4π≈tc⇒π≈4c/t
2. 模拟代码
# -*- coding:utf-8 -*-# @Python Version: 3.7# @Time: 2020/5/2 9:02# @Author: Michael Ming# @Website: https://michael.blog.csdn.net/# @File: monte_carlo_cal_pi.py# @Reference: import randomimport matplotlib.pyplot as pltsimulations = [100, 1000, 10000]plt.figure()plt.rcParams['font.sans-serif'] = 'SimHei' # 消除中文乱码plotid = 1color = ['r', 'b']for i in range(len(simulations)): f = plt.subplot(1, 3, plotid) plotid += 1 count = 0 t = simulations[i] time = simulations[i] while time > 0: time -= 1 x = random.random() # [0,1) y = random.random() # [0,1) val = x ** 2 + y ** 2 pos = 1 if (val < 1): pos = 0 count += 1 f.scatter(x, y, c=color[pos]) pi = 4 * count / t f.set_title("模拟次数{},pi的值{:.4f}".format(t, pi))plt.suptitle("蒙特卡罗法近似求解圆周率pi")plt.show()
转载地址:https://michael.blog.csdn.net/article/details/105886943 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月12日 15时16分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
StringIO和BytesIO
2019-05-02
财务分析与决策:同型分析
2019-05-02
今日整理PDF电子书资料
2019-05-02
【语言-c#】C# 超级整数计算
2019-05-02
【软件-Doxgen】工具:程序代码生成xml文档(doxgen)
2019-05-02
【语言-c#】C# 注释详细介绍说明
2019-05-02
MySQL 内存模型
2019-05-02
node.js 实现一个简单的登录拦截器
2019-05-02
c++抽象类、纯虚函数以及巧用纯虚析构函数实现接口类【转】
2019-05-02
Caffe 安装错误记录及解决办法【转】
2019-05-02
Android用类继承Application的全局变量使用注意
2019-05-02
算法排序之桶排序
2019-05-02
lambda表达式初探
2019-05-02
C++ Template类模板的特化(3.3节, 3.4节)
2019-05-02
第05章 函数
2019-05-02
第08章 输入和输出
2019-05-02