python算法仿真_蒙特·卡罗算法的Python实现

一 背景

此算法诞生的背景是:

曼哈顿计划,有极大的计算需求。

计算机刚开始发展,最适合做计算。

蒙特卡洛算法理论基础是概率论,实际就是暴力计算逼近理想结果。正是在以上两个背景下,它刚好得到了极大的应用和发展。

二 概念

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

三 实例

上面叙述的是定义,我来描述一个例子:蒙特卡罗法计算圆周率

1.问题描述

一个圆半径R,它有一个外切正方形边长2R。

可以知道:

圆面积=Pi R^2

正方形面积 2R x 2R=4R^2

从这个正方形内随机抽取一个点,对这个点的要求是在正方形内任意一点的概率平均分布。

那么这个点在圆以内的概率大概就是pi*R2/4R2=pi/4

生成若干个这样的点,利用平面上两点间距离公式计算这个点到圆心的距离来判断是否在圆内。

当我们使用足够多的点来进行统计时,我们得到的概率值十分接近pi/4

这样就可以得到pi值

2.代码

import random

import math

def main():

print '请输入迭代的次数:'

n=int(raw_input()) #n是随机的次数

total=0 #total是所有落入圆内的随机点

for i in xrange(n):

x=random.random()

y=random.random()

if math.sqrt(x**2+y**2)<1.0: #判断是否落入圆内

total+=1

mypi=4.0*total/n #得到Pi值

print '迭代次数是',n,'Pi的值是:',mypi

print '数学pi:',math.pi

print '误差是:',abs(math.pi-mypi)/math.pi #计算误差

main()

3.结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值