蒙特卡罗算法入门
来源:互联网 发布:时间轴软件 编辑:程序博客网 时间:2024/06/06 19:21
基本思想
当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。
求圆周率
上面的两张图来自阮一峰的网络日志,深表感谢!
相信都能理解上面公式的含义,在半径相同的条件下,圆的面积和正方形的面积存在固定的比例关系,这个关系就是pi/4
# -*- coding:UTF-8 -*-import randomimport mathprint '请输入迭代的次数:'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 += 1pi = 4.0 * total / n # 得到Pi值print '迭代次数是', nprint 'Pi的值是:', piprint '标准数学pi是:', math.piprint '误差是:', abs(math.pi - pi) / math.pi # 计算误差这段代码十分容易理解,这里把面积缩小为整圆的1/4
求定积分与自然数e
在上图里,整个正方形的面积是1,红色部分表示积分函数的面积。我们很容易理解,随机数落在红色区域的概率和落在正方形区域的概率的壁纸就可以表示该定积分的值
# -*- coding:UTF-8 -*-import randomprint '请输入迭代的次数:'n = int(raw_input())total = 0for i in xrange(n): x = random.random() y = random.random() if x*x > y: total += 1integrate = 1.0*total / nprint '迭代次数是', nprint '积分的结果是:', integrate关于自然数e的计算,因为暂时还不会插入公式,这里先给出代码,随后把图和公式补上
# -*- coding:UTF-8 -*-import randomprint '请输入迭代的次数:'n = int(raw_input())total = 0for i in xrange(n): x = random.uniform(1, 2) y = random.uniform(0, 1) if 1/x > y: total += 1rate = n*1.0/totalprint '迭代次数是', nprint rateprint '积分的结果是:', 2**rate
0 0
- 蒙特卡罗算法入门
- 算法入门
- 算法入门
- 算法入门
- 算法入门。。?
- 算法入门
- 算法入门
- 算法入门
- 算法入门
- 算法入门-程序设计入门
- 算法入门5:贪心算法
- 算法入门8:随机算法
- 算法入门题
- 遗传算法入门
- 遗传算法入门
- 第二章 算法入门
- 算法入门的唠叨
- 算法竞赛入门经典
- android工程so文件生成命令
- 用 VC6 制作 windows 7 8 以管理员权限运行的程序
- CSDN-markdown编辑器
- 结合lucene实现大数据的like模糊查询
- JavaScript 删除某个数组中指定的对象
- 蒙特卡罗算法入门
- 关于jquery做文字翻滚效果
- 用户登录成功自动跳转页面
- Flex 布局教程:语法篇
- java IO 基于模板文件替换字符生成word文档
- Spring学习(1)
- 微信公众号代码推送
- oracle常用语句自动补齐
- 搭建一个开发Predix软件的Ubuntu 系统(2)配置使用Predix工业云平台的基础环境