基于Python的蒙特卡罗方法估计Pi值的实现

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

MC方法通过随机模拟来解决问题,先想象一个圆心为(0.5,0.5),半径为0.5的圆,面积为π/4,设为S1,还有一个外切的正方形,面积为1,设为S2,现向正方形内随机掷点,假设掷点总数为N,其中落入圆内部的点的总数为M,那么落入圆内的概率为M/N。由几何概型,点落入圆内部的概率为S1/S2,那么由M/N=S1/S2即可推出π=4M/N。

首先模拟生成在正方形区域的随机点

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches


def get_random_points(N):
    np.random.seed(42)
    random_points = np.random.rand(N, 2)
    return random_points

这里的 np.random.seed(42) 是一个随机数种子,接下来定义一个估计圆周率的函数,分割为圆内和圆外两部分

# 计算pi的值,并将圆内外的点分开,方便做图
def cal_pi(random_points):
    inCircle_points = [
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值