蒙特卡洛法求Pi
来源:互联网 发布:医美网络运营总监 编辑:程序博客网 时间:2024/06/08 15:35
编程实现如下模拟:
飞镖被随机地投掷到以(1,1)和(-1,-1)为对角的正方形内。若飞镖落在单位圆内【即以(0,0)为圆心,1为半径的圆】,算命中。否则未命中。
运行这个模拟并用它求PI的近似值。
模型如下图所示:
// Circle_PI.cpp : 定义控制台应用程序的入口点。//#include <iostream>#include <cstdlib>#include <ctime>#include <iomanip>using namespace std;const int MAX_DAST=100000;//投掷总数double rand_double(double a,double b);void rand_seed();//设置随机数的种子int main(void){int PI_DAST=0;//投掷在圆里面的总数rand_seed();for(int i=0;i<MAX_DAST;i++){double x=rand_double(-1,1);double y=rand_double(-1,1);if( x*x+y*y<=1)PI_DAST++;}double PI=PI_DAST*4.0/MAX_DAST;cout<<fixed;cout<<"PI="<<PI<<endl;system("pause");return 0;}/**生成某一区域内的随机浮点数@param a 该区域的下边界@param b 该区域的上边界@param return 随机浮点数x,x∈[a,b]*/double rand_double(double a,double b){return a+(b-a)*rand()*1.0/RAND_MAX;/*RAND_MAX是VC中stdlib.h中宏定义的一个字符常量: #define RAND_MAX 0x7FFF 其值最小为32767,最大为2147483647 通常在产生随机小数时可以使用RAND_MAX。*/}/**设置随机数生成器的种子*/void rand_seed(){int seed=static_cast<int>(time(0));//返回的是系统的时间srand(seed);/*rand()产生伪随机数。srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数,将time(0)的结果设置成种子。srand函数是随机数发生器的初始化函数。*/}
http://blog.csdn.net/smsmn/article/details/6338925
- 蒙特卡洛法求Pi
- 蒙特卡洛法求Pi
- 1蒙特卡洛法求PI
- 蒙特卡洛法求圆周率pi
- PI
- pi
- Pi
- PI
- pi
- Pi
- Pi
- [pi
- pi
- PI
- π (PI)
- pi演算
- PI system
- 圆周率PI
- Spring常用注解
- Android推送 采用XMPP协议实现
- 国际化
- 2014美团网笔试题目(总结)
- android - 自定义标题栏(在标题栏中增加按钮和文本居中)
- 蒙特卡洛法求Pi
- DevExpress GridControl使用方法总结
- Maven多模块项目 eclipse热部署 Maven项目实现 tomcat热部署 二
- ios7下评论的链接
- 区别div和span
- 中国网络创业的机遇与挑战
- uva 839 Not so Mobile
- 南北桥芯片
- flash学习——选择工具、部分选择工具、变形工具、套索工具、钢笔工具、线条工具