蒙特卡洛法计算圆周率近似值(C语言)

C语言实现蒙特卡洛法计算圆周率近似值

随机生成ALL个范围0-1的数来模拟1×1的正方形,计算位于四分之一圆(X×X+Y×Y<1)内的个数inround,PI=4×ALL/inround。其中宏的参数(ALL和RAND_MAX)对于精确度非常关键。
蒙特卡洛法计算圆周率近似值(C语言)_第1张图片
蒙特卡洛法计算圆周率近似值(C语言)_第2张图片

#include
#include
#include
#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;	
}
 

你可能感兴趣的:(笔记,算法)