蒙特卡罗类型概率算法

蒙特卡罗算法:用蒙特卡罗算法能够求得问题的一个解,但是这个解未必是正确的。求得正确解的概率依赖于算法所用的时间。算法所用的时间越多,得到正确解的概率就越高。蒙特卡罗算法的主要缺点就在于此。一般情况下,无法有效判断得到的解是否肯定正确。其特点是判定问题的准确解,得到的解不一定正确。

【问题】设计一个求(圆周率)的蒙特卡罗型概率算法。

【解答】在边长为2的正方形内有一半径为1的内切圆,如图所示。向该正方形中投掷n次飞镖,假设飞镖击中正方形中任何位置的概率相同,设飞镖的位置为(x,y),如果有+1,则飞镖落在内切圆中。

这里内切圆面积为,正方形面积为4,内切圆面积与正方形面积比为/4。若n次投掷中有m次落在内切圆中,则内切圆面积与正方形面积之比可近似为m/n,即/4m/n,或者4m/n。

由于图中每个象限的概率相同,这里以右上角象限进行模拟。采用蒙特卡罗型概率算法求得程序如下:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;int randa(int a,int b) {return rand() % (b - a + 1) + a;
}
double rand01() {    //产生一个[0,1]的随机数return randa(0, 100)*1.0 / 100;
}double solve() {   //求π的蒙特卡罗算法int n = 10000;int m = 0;double x, y;for (int i = 0; i < n;i++) {x = rand01();y = rand01();if (x*x+y*y<=1.0) {m++;}}return 4.0*m / n;}void main() {srand((unsigned)time(NULL));//随机种子cout <<"π="<<solve()<< endl;system("pause");
}

选择出现频率出现最高的即可。

蒙特卡罗类型概率算法相关推荐

  1. 拉斯维加斯类型概率算法-n皇后问题

    拉斯维加斯类型概率算法的一个显著特征是它所做的随机性选择有可能导致算法找不到问题的解,即算法运行一次,或者得到一个正确的解,或者无解.因此,需要对同一输入实例反复多次运行算法,直到成功地获得问题的解. ...

  2. 【数据结构和算法设计】算法篇(11) 概率算法和近似算法

    文章目录 12.1 概率算法 12.1.1 什么是概率算法 1. 概率算法的特点 2. 概率算法的分类 3. 随机数生成器 12.1.2 蒙特卡罗类型概率算法 12.1.3 拉斯维加斯类型概率算法 1 ...

  3. 数据结构和算法详解(四)——五大基本算法思想

    更多例子可参考:https://blog.csdn.net/Aidam_Bo/article/details/86715865 一.穷举算法思想 穷 举 算 法 (ExhaustiveA ttack ...

  4. 算法小课堂(十)随机化算法

    目录 一.概述 1.1概念 1.2分类 二.数值随机化算法 2.1随机数 2.2用随机投点法计算Π值 2.3随机投点法计算定积分 三.舍伍德(Sherwood)型随机化算法 3.1随机洗牌算法 3.2 ...

  5. 海南大学期末复习——算法设计与分析

    目录 引言 算法基础知识 算法的五个特性:(必考) 常用的描述算法的方法: 时间复杂度: 基本的算法设计技术 分治法与减治法 基本思路: 同与异: 适用范围: 应用: 归并排序 快速排序: 堆排序: ...

  6. Nash演讲稿中文版

    通过代理来研究博弈中的合作     在一九六六年的"科学夏令营"上,我曾经从重复与进化策略的角度,针对那些致力于合作适应的自然进化研究的理论生物学家对"囚徒困境" ...

  7. 《疯狂Java讲义》(第5版) 作者李刚(待重新排版)

    第1章 Java语言概述与开发环境 1.1 Java语言的发展简史 JDK1.0 : Sun在1996年年初发布了JDK 1.0,该版本包括两部分:运行环境(即JRE)和开发环境(即JDK).运行环境 ...

  8. C++ 概率算法 利用蒙特卡罗算法计算圆周率

    概率算法大致可分为4种形式: 数值概率算法: 蒙特卡罗算法: 拉斯维加斯算法: 舍伍德算法: 计算蒙特卡罗概率的算法实现: 1 #include "stdio.h" 2 #incl ...

  9. OpenMP 编程实例(蒙特卡罗算法)

    有关clock()函数 1,clock()函数在头文件#include<time.h>中 2,clock()函数的返回值类型为clock_t.clock_t其实是long,即长整形. cl ...

  10. 蒙特卡罗(Monte Carlo)方法

    蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法.          一 起源 这一方法源于美国在第二次世界大战进研制原子弹的&qu ...

最新文章

  1. 自定义Seekbar拖动条式样
  2. Atlas study:使用Accordion实现页面多个块状区域的显隐
  3. 注入游戏没有焦点_《热血传奇怀旧版》即将登陆咪咕快游 盛趣游戏端游上云再落一子...
  4. 函数递归以及尾递归调用
  5. 基于RK3399 PWM驱动开发
  6. 只能在执行Render() 的过程中调用 RegisterForEventValidation;
  7. oracle11 g ora 03113,解决oracle11g ORA-32004: obsolete or deprecated parameter(s)
  8. ip雷达3.0_本周在我们的雷达上:轻松如1.0、2.0、3.0
  9. 抖音上热门规则 视频md5码查看器
  10. ps安装插件提示“无法加载扩展,因为它未正确签署”怎么办?PS插件未经签署解决方法
  11. 34 WebGL物体的点光源的效果(逐顶点处理光源光照效果)
  12. 汉诺塔问题(看完就记住)
  13. 常见10种安全漏洞(OWAPS TOP 10)
  14. 洛谷P4043 支线剧情
  15. 泛泰binx和ota升级包下载工具Android版[2013.6.7提供源代码]
  16. 华为鸿蒙系统问世微信红包,一个巨头的诞生 华为鸿蒙车机系统问世
  17. 数据结构之递归算法解决汉诺塔问题
  18. 中国大学MOOC C语言程序设计(大连理工大学) 课后编程题 第三周题解(个人向仅供参考)
  19. webpack css-loader style-loader scss-loader cssloader模块化
  20. python清空字典保留变量方法,python关于字典的常用方法

热门文章

  1. 国产操作系统怎么下载安装使用Photoshop这样的软件?
  2. 清理autodesk产品注册表_怎么清理Autodesk产品注册表,3dmax,CAD,maya注册表清理方法!...
  3. 深度学习实时表情识别
  4. VS2010安装VC9 RunTime 失败的问题
  5. 乌班图系统设置系统语言,以及中文输入法
  6. CentOS7和CentOS8 Asterisk 20.0.0 简单图形化界面5--libss7驱动7号信令
  7. 度分秒与度数相互转换的Matlab函数
  8. Kali系统下载Thefatrat太慢怎么办?
  9. GAN平衡G和D的训练
  10. 18650锂电池保护板接线图_锂电池保护板的原理介绍保护板的构成和主要作用