文章目录

  • 1. 原理
  • 2. 模拟代码

1. 原理

  • 给出 x∈[0,1),y∈[0,1)x \in [0,1),y\in[0,1)x∈[0,1),y∈[0,1) 的均匀分布随机点,模拟 ttt 次,落在以 (0,0)(0,0)(0,0) 为圆心,半径 r=1r=1r=1 的圆以内的次数为 ccc
  • 当模拟次数足够大时,可以看成面积比 π4≈ct⇒π≈4c/t\frac{\pi}{4} \approx \frac{c}{t}\Rightarrow \pi \approx 4c/t4π​≈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 random
import matplotlib.pyplot as pltsimulations = [100, 1000, 10000]
plt.figure()
plt.rcParams['font.sans-serif'] = 'SimHei'  # 消除中文乱码
plotid = 1
color = ['r', 'b']
for i in range(len(simulations)):f = plt.subplot(1, 3, plotid)plotid += 1count = 0t = simulations[i]time = simulations[i]while time > 0:time -= 1x = random.random()  # [0,1)y = random.random()  # [0,1)val = x ** 2 + y ** 2pos = 1if (val < 1):pos = 0count += 1f.scatter(x, y, c=color[pos])pi = 4 * count / tf.set_title("模拟次数{},pi的值{:.4f}".format(t, pi))
plt.suptitle("蒙特卡罗法近似求解圆周率pi")
plt.show()

蒙特卡罗法近似求解圆周率π相关推荐

  1. 蒙特.卡罗方法求解圆周率近似值原理与Python实现

    对于某些不能精确求解的问题,蒙特.卡罗方法是一种非常巧妙的寻找近似解的方法. 以求解圆周率的问题为例,假设有一个单位圆及其外切正方形,我们往正方形内扔飞镖,当扔的次数足够多以后,"落在圆内的 ...

  2. python中的圆周率怎么表示_如何采用Python语言求解圆周率的π值

    蒙特卡洛方法提供了一个利用计算机中随机数和随试验解决现实中无法通过公式求解问题的思路,本实例,通过采用蒙的卡罗方法采用Python语言来实现求解圆周率π的值 工具/原料 Python元件包 win7系 ...

  3. 蒙特卡罗方法近似求解定积分-Go语言

    蒙特卡罗方法近似求解定积分-Go语言 蒙特卡罗方法 蒙特卡洛方法是一种用大数统计频率来模拟概率的方法.也就是说,当样本越多,越有可能获得及接近最优解. 定积分的几何意义 定积分的几何意义实际上就是求函 ...

  4. 求解圆周率PI的近似值

    题目描述如下: 用公式π/4≈1-1/3+1/5-1/7+...求圆周率PI的近似值,直到发现某一项的绝对值小于10^(-6)为止(该项不累加). 要求输出的结果总宽度占10位,其中小数部分为8位. ...

  5. e的近似求解方法matlab,3X^2-E^X并用matlab切线法求出所有实根的近似值,源程序

    解不等式x²-2x-3≤0,并用区间表示不等式解集. x²-2x-3≤0→(x-3)(x+1)≤0→-1≤x≤3.∴x∈[-1,3]. 求不定积分∫[e^(2x)-3/e^x]dx e--x+3e-- ...

  6. 用矩形积分近似求解定积分的动画示意图

    解答过程中的发现: imwrite的帮助文档说明了如何保存gif,很详细 开始定义的syms函数,将被积函数传入作图的函数中,但有些运算不支持syms类型,于是就再转成double型,发现这个过程还挺 ...

  7. 模拟雪花飘入圆中求解圆周率

  8. python莱布尼茨法计算π_酷叮猫少儿编程讲堂——Python 用莱布尼茨等式求π

    原标题:酷叮猫少儿编程讲堂--Python 用莱布尼茨等式求π Python 用莱布尼茨等式求π 2018-08-01 德国大数学家莱布尼茨Leibniz在研究圆周率π的过程中发现一个数学公式是这样的 ...

  9. 算法的本质是什么?程序员如何学好算法?

    这几年来,小灰一直在用漫画的形式分享算法知识,每一次所分享的,都是一个具体的算法知识点. 今天,让我从宏观的角度来讲一讲,算法到底是什么?如何来学好算法. 1. 算法是什么 所谓算法,指的是解决实际问 ...

最新文章

  1. 下载合适的python-python下载文件的三种方法
  2. 关于IE7 兼容问题
  3. insert into 插入空值_MySQL数据库的表中 NULL 和 空值 到底有什么区别呢
  4. vuex的计算属性_Vuex详细介绍
  5. jquery选中以什么开头的元素
  6. input maxlength 汉字_汉字原来这么好玩 第A15版:亲子悦读 20201104期 都市女报
  7. 诗与远方:无题(八十四)- 自己醉了
  8. 重新认识C#: 玩转指针
  9. iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
  10. 计算机考研复试面试常问问题 数据结构篇(上)
  11. WIFI pineapple使用心得
  12. 共享文件夹没有权限访问
  13. 台式计算机加固态硬盘,台式机添加固态硬盘教程_台式主机固态硬盘怎么安装-win7之家...
  14. 员工主动提出加班,公司要支付加班费吗?
  15. 安卓(Android)手机如何安装APK?
  16. 图片文字转换为文本怎么做?图片转文本的简单方法介绍
  17. 微信开发获取地理位置实例(java,非常详细,附工程源码)
  18. 有哪些可以用于语文作文中的高级词汇?
  19. 6-8 使用函数求最大公约数 (10 分)
  20. angular基础学习

热门文章

  1. 在 Pycharm下使Python2和Python3共用Anaconda中的各种库/包的解决方法
  2. resin指定java版本_resin的几个常用配置
  3. *p++,*(p++),(*p)++的区别
  4. [转]命令行在IIS添加虚拟目录
  5. 【转】JMeter学习(十三)分布式部署
  6. 抽象类(Abstract)和接口的不同点、共同点(Interface)。
  7. Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]
  8. 游标操作 for Oracle
  9. hoj2677 Instruction Set // poj3253Fence Repair 哈夫曼树
  10. Jquery 操作select总结