博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蒙特罗卡π算法(C++语言描述)
阅读量:7038 次
发布时间:2019-06-28

本文共 612 字,大约阅读时间需要 2 分钟。

圆的面积计算公式为:S=π*r*r

将圆放到一个直角坐标系中,如图黄色部分的面积是S/4=(π*r*r)/4;如果我们将取一个单位圆,则S/4=π/4.

因为是单位圆,半径为1,所以图中红色正方形的面积为1。

那么如果向正方形内均匀的撒点,那么落入阴影部分的点数与全部的点数之比应该是:

S阴影/S正方形=π/4.==============》π=4*S阴影/S正方形

根据概率统计的规律,只要撒的点足够多,那么将得到近似的结果。

使用蒙特卡罗算法计算圆周率有如下两个关键点:

均匀撒点:通过rand函数残生[0,1]之间随即的坐标值[x,y]

区域判断:图中黄色部分的特点是距离坐标原点的距离小于等于1,这样,可以通过计算判断x2+y2<=1来实现。

C++语言代码:

 

#include
#include
#define s_rand() double(1.0*rand()/RAND_MAX)using namespace std;double MontePI(int n){ double PI; double x,y; int i=0,sum=0; srand(time(0)); for(i=0;i
>n; PI=MontePI(n); cout<<"PI="<
<

结果:

 

 

你可能感兴趣的文章
Mac显示隐藏文件的终端命令
查看>>
Spring MVC controller间跳转 重定向 传参 (转)
查看>>
再破博客园登录
查看>>
Entity Framework在WCF中序列化的问题
查看>>
OpenCL快速入门
查看>>
选择生成日报表,月报表,年报表
查看>>
使用位操作
查看>>
Babelfish(二分)
查看>>
JS 中如何判断 undefined 和 null
查看>>
ftk学习记录(一个进度条文章)
查看>>
log4j直接输出日志到flume
查看>>
非正确使用浮点数据由项目产生BUG讨论的问题
查看>>
PHP5中的stdClass
查看>>
IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境
查看>>
四种可变交流swap方法
查看>>
Lucene中的 Query对象
查看>>
二分基础
查看>>
物流英语
查看>>
[iOS]iOS8可用的识别用户方式(idfa、UUID、idfv)
查看>>
hdu1507--二分图最大匹配
查看>>