使用蒙特卡洛方法估算圆周率

什么是蒙特卡洛方法

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。[1]

蒙特卡洛方法计算圆周率

我们可以使用蒙特卡洛方法估算圆周率,具体思路如下:
思考一个1*1的正方形,它的内接圆和正方形的面积之比为pi/4。我们在正方形的面积范围内产生大量(n个)随机的点,再统计这些点在圆的范围内的数量m。则pi/4 = m/n,由此可估算pi的值。代码如下:

import random
def calc_pi():
    n = 100000000
    x_min, x_max = 0.0, 1.0
    y_min, y_max = 0.0, 1.0

    count = 0
    for i in range(0, n):
        x = random.uniform(x_min, x_max)
        y = random.uniform(y_min, y_max)
        if x*x + y*y <= 1:
            count += 1

    pi = count / float(n)*4
    return pi
print(calc_pi())
#3.14153148

你可能感兴趣的:(使用蒙特卡洛方法估算圆周率)