Python 3.7 —— 随机法(蒙特卡罗方法)计算圆周率

来自编程技术交流中心(QQ群:167998652)——StarSky_STZG
本文链接: https://blog.csdn.net/weixin_43272781/article/details/102773542

基本概念

蒙特卡罗方法:蒙特卡罗方法于20世纪40年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”计划的成员S.M.乌拉姆和J.冯·诺伊曼首先提出。数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩。在这之前,蒙特卡罗方法就已经存在。1777年,法国数学家布丰(Georges Louis Leclere de Buffon,1707—1788)提出用投针实验的方法求圆周率π。这被认为是蒙特卡罗方法的起源。

算法思想

 当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种"实验"的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。

问题分析 

通过多次撒点,模拟概率,求面积,而是否在圆内,可以通过到圆心的距离求解,利用计算机的运算速度,可以很快求出圆周率。

撒点次数越多,圆周率就越准确。 

 

源代码 

#CalPI.py
from random import random
from math import sqrt
from time import process_time
DARTS=1000
hits=0.0
process_time()
for i in range(1,DARTS+1):
    x,y=random(),random()
    dist=sqrt(x**2+y**2)
    if(dist<=1.0):
        hits=hits+1
pi=4*(hits/DARTS)
print("PI值是{}.".format(pi))
print("运行时间是:{:.5f}s".format(process_time()))

 

10e6次

10e7次 

 

10e8次

扫描二维码关注公众号,回复: 7656197 查看本文章

 

10e9次 

10e10次

 实在跑不了,Python太慢了

参考文章

https://baike.so.com/doc/5989374-6202341.html

https://blog.csdn.net/q1694222672/article/details/81985391

猜你喜欢

转载自blog.csdn.net/weixin_43272781/article/details/102773542