基于Python实现蒙特卡洛法计算圆周率π

 更新时间:2023年06月19日 11:09:53   作者:python小爬菜  
蒙特卡罗法也称统计模拟法、统计试验法,是把概率现象作为研究对象的数值模拟方法,是按抽样调查法求取统计值来推定未知特性量的计算方法,本文我们将介绍如何使用Python来实现蒙特卡洛法计算圆周率π,感兴趣的朋友可以参考下

一、前置内容

蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。 [1]

1.1、了解random库

random库是使用随机数的Python标准库
伪随机数 :采用 梅森旋转算法 (伪)随机序列中元素
random库主要用于生成随机数
使用random库: import random

1.2、基本随机数函数

为什么要随机种子呢?
因为给了随机数种子, 调用的random()出的随机数是相同 , 那么对于一个随机数程序来说 , 可以做到复现的作用

1.3、扩展随机数函数

二、案例需求

看四分之一的部分 , 使用蒙特卡洛方法 , 模拟1000000次点随机落在这个四分之一上面 , 记录落在四分之一⚪内的,最后 4*( 四分之一落入圆内的随机点/四分之一部分面积), 算出来就是圆周率。

使用蒙特卡洛法计算圆周率
输入:无
输出:一般为3.14...

三、案例分析与解决过程

一、怎么使用蒙特卡洛方法计算圆周率?
答案:看四分之一的部分 , 使用蒙特卡洛方法 , 模拟1000000次点随机落在这个四分之一上面 , 记录落在四分之一⚪内的,最后 4*( 四分之一落入圆内的随机点/四分之一部分面积), 算出来就是圆周率。

二、怎么判断落入点在圆中?
答案:在单位⚪中 , 半径为1 , 那么随机点的x,y值 , (x平方+y平方之和的开方) 为随机点到圆心的距离 , 如果该距离小于1,那么判断该随机点在圆心中. 距离代码 pow(x2+y2 , 0.2)

四、完整代码

from random import random  
# 投入1000000个随机点  
DARTS = 1000*1000;  
hits = 0.0  
for i in range (1 , DARTS +1 ):  
x , y =random() ,random() ;  
# 点到圆心的距离  
dist = pow(x**2 + y**2 , 0.5 )  
# 判断抛出点与圆心距离 , 小于半径 , 在圆中  
if(dist < 1.0):  
hits = hits +1 ;  
pi = 4 * (hits / DARTS)  
print("圆周率为:{}".format(pi))

五、检验与验收代码

六、复盘所学知识

1、随机数库random是python的标准库

2、常用随机函数random() , seed()

到此这篇关于基于Python实现蒙特卡洛法计算圆周率π的文章就介绍到这了,更多相关Python 计算圆周率π内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python捕获异常堆栈信息的几种方法(小结)

    Python捕获异常堆栈信息的几种方法(小结)

    这篇文章主要介绍了Python捕获异常堆栈信息的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 使用Selenium破解新浪微博的四宫格验证码

    使用Selenium破解新浪微博的四宫格验证码

    今天小编就为大家分享一篇关于使用Selenium破解新浪微博的四宫格验证码的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 终于搞懂了Python中super(XXXX, self).__init__()的作用了

    终于搞懂了Python中super(XXXX, self).__init__()的作用了

    本文主要介绍了终于搞懂了Python中super(XXXX, self).__init__()的作用了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python命名空间详解

    Python命名空间详解

    这篇文章主要介绍了Python命名空间详解,非常重要的概念,需要的朋友可以参考下
    2014-08-08
  • python实现拉格朗日插值及作图

    python实现拉格朗日插值及作图

    这篇文章主要为大家详细介绍了python实现拉格朗日插值及作图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Python 中 Elias Delta 编码详情

    Python 中 Elias Delta 编码详情

    这篇文章主要介绍了Python 中 Elias Delta 编码,下面的文章我们将使用 python 实现 Elias Delta 编码。具体详细内容,需要的朋友可以参考一下
    2021-11-11
  • Python调用百度api实现语音识别详解

    Python调用百度api实现语音识别详解

    这篇文章主要介绍了Python通过调用百度api实现语音识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2021-12-12
  • Python读取文件的8种常用方式

    Python读取文件的8种常用方式

    这篇文章主要给大家介绍了关于Python读取文件的8种常用方式,在编程语言中,文件读写是最常见的IO操作,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • python+appium+yaml移动端自动化测试框架实现详解

    python+appium+yaml移动端自动化测试框架实现详解

    这篇文章主要介绍了python+appium+yaml移动端自动化测试框架实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • PyQt4编程之让状态栏显示信息的方法

    PyQt4编程之让状态栏显示信息的方法

    今天小编就为大家分享一篇PyQt4编程之让状态栏显示信息的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论