Python-蒙特卡罗方法计算圆周率

版权声明:一起学习啊 https://blog.csdn.net/q1694222672/article/details/81985391

蒙特卡罗方法

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

基本思想就是大量实验,模拟概率


分析 过程

单位圆的面积是PI,单位圆的外切正方形面积是4

所以,1/4个圆的面积是PI/4,外切正方形的面积是1

这里写图片描述

而1/4圆的面积/单位正方形的面积就是PI/4

所以

#蒙特卡罗方法计算圆周率
import random,math,time
start_time = time.perf_counter()
s = 1000*1000
hits = 0
for i in range(s):
    x = random.random()
    y = random.random()
    z = math.sqrt(x**2+y**2)
    if z<=1:
        hits +=1

PI = 4*(hits/s)
print(PI)
end_time = time.perf_counter()
print("{:.2f}S".format(end_time-start_time))
--------------------------------------------------------
3.14134
0.59S

通过多次撒点,模拟概率,求面积,而是否在圆内,可以通过到圆心的距离求解,利用计算机的运算速度,可以很快求出,即使1000万次,也只需要6秒左右

猜你喜欢

转载自blog.csdn.net/q1694222672/article/details/81985391