电脑的特点在于速度快,记忆好,最擅长做机械化的重复工作,用暴力的方法来近似pi值可以利用蒙特卡洛方法或微分法来计算。
1 蒙特卡洛方法和微分法求π值
如上图所示:
对于单元圆的面积:πr^2=π(单位圆的半径为1)
正方形的面积:1
1/4单元圆与正方形的面积的比值=4/π
如果随机产生一个0-1内的数,其落在1/4单元圆内的概率与落在正方形内的概率就是两个图形的面积之比,随机数越多,越真实接近。
落在正方形内的随机数个数可以用总的随机数的个数来表示。
其落在单元圆内的随机数个数可以通过计算其坐标点与圆点的距离比较而求得,如果<=1则表示位于单位圆内。
#include using namespace std;#include #includevoid main(){int p;//随机数int circle;//圆内的点int square;//正方形内的点int toss;//投掷次数int rm=RAND_MAX;//最大随机数float pi;//pi值float x,y;//坐标值float r;//点与原点的距离char flag;srand((unsigned)time(NULL));do{circle=0;do{cout<>toss;}while((toss<2) || (toss>55555));square = toss;for(int i&