monte carlo方法求面积的算法
程序代码:
#include<iostream> #include<ctime> #include<stdlib.h> #define RAND_MAX 0x7FFF using namespace std; void main() { double a,b; double x,y,area;//用于构造y与x的函数y=8x-x*x+7 double count=0.0;//计数 a=7.0;//x轴上 b=9.0;//y轴上 area=a*b; srand((unsigned)time(0)); for(int i=0;i<10000;i++) { //srand((unsigned)time(0)); x=rand()/(double)(RAND_MAX/a);//函数用于返回一个在0~a的随机值 y=rand()/(double)(RAND_MAX/b);//函数用于返回一个在0~b的随机值 if(x>1&&x<a) if(y>0&&y<(8*x-x*x+7)) count++; } cout<<count<<endl; area=area*count/10000; cout<<area<<endl; }