C語言隨機法計算圓周率近似值
阿新 • • 發佈:2021-01-29
技術標籤:演算法
C語言隨機法計算圓周率近似值
由於使用隨機法,因此每次結果都是不同的。原理就是隨機生成數字並通過計算位於圓(XX+YY<1)內的概率估算。其中巨集的引數(ALL和RAND_MAX)對於精確度非常關鍵。
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#define ALL 100000
int main ()
{
srand(time(0));
double X[ALL],Y[ALL];
int inround=0,index;
for(index=0;index< ALL;index++)
{
X[index]=(double)rand()/(double)RAND_MAX;
Y[index]=(double)rand()/(double)RAND_MAX;
if(X[index]*X[index]+Y[index]*Y[index]<=1)
inround++;
/* printf("%lf %lf\n",X[index],Y[index]); */
}
//計算平均數一定程度上檢驗生成的隨機數是否合理//
for(index=1;index<ALL;index++)
{
X[0]+=X[index] ;
Y[0]+=Y[index];
}
printf("\n%lf %lf",X[0]/ALL,Y[0]/ALL);//越接近0.5越合理//
printf("\n圓周率近似= %lf\n",4*(double)inround/(double)ALL);
return 0;
}