⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 圆周率的统计计算.cpp

📁 圆周率统计计算方法仿真(即蒙特卡罗Monte Carlo仿真) 文件 应用程序:圆周率的统计计算.exe 源代码文件:圆周率的统计计算.c
💻 CPP
字号:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h> 

#define PI 3.141592653589793

void main( )
{
     int digit_num_after_dot = 5;
S:   printf("请输入要精确到的小数点后的位数(1~8):\n");
	 do
	 {
		 scanf("%d",&digit_num_after_dot);
	 }while(digit_num_after_dot < 1 || digit_num_after_dot > 8);
	 double precision = pow( 10,(-1)*digit_num_after_dot); 

	 int all_num = 0;
	 int success_num = 0;
	 const int step_num = 100;
	 bool go_on = true;

	 double t_value1[step_num] ;
	 double t_value2[step_num] ;
	 double pai = 0;

	 int i = 0 ,j,t=0;
	 srand( (unsigned)time( NULL ) );
	 printf("圆周率的值    落入1/4圆中的点数  单位正方形中的总点数\n");
	 do
	 {
		     i++;
			 for( j = 0;j < step_num; j++ ) 
			     t_value1[j] = (double) rand()/RAND_MAX ;
			 for( j= 0;j< step_num; j++ ) 
		         t_value2[j] = (double)rand()/RAND_MAX ;
			 for(j = 0;j < step_num; j++ ) 
			 {
				 if( (t_value1[j] * t_value1[j] + t_value2[j] * t_value2[j]) < 1 )
					 success_num++;
			 }
		
			 all_num = i * step_num ;
			 pai = 4*(double)success_num/(double)all_num;
             printf("%10f,%15d,%20d\n",pai,success_num,all_num);
			 if(  (pai < ( PI + precision)) && (pai > (PI - precision)))
			 {
				 printf("圆周率的估计值为:%f\n所用点数:%d\n精度要求:%f\n",
					    pai,all_num,precision);
				 go_on = false;
				 break;
			 }
	 }while(go_on);
    
     printf("Will you proceed?(y/n)\n");
	 scanf("%s",&t);
	 if(t=='y'||t=='Y') 
		 goto S;
	 else return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -