likes
comments
collection
share

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

作者站长头像
站长
· 阅读数 10

Python小案例

一、前置内容

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

1.1、了解random库

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

1.2、基本随机数函数

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

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

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

1.3、扩展随机数函数

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

二、案例需求

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

看四分之一的部分 , 使用蒙特卡洛方法 , 模拟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))

五、检验与验收代码

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

第九篇:使用Python来实现蒙特卡洛法计算圆周率π

六、复盘所学知识

1、随机数库random是python的标准库 2、常用随机函数random() , seed()