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

📄 pi.cpp

📁 概率与数理统计的小作业
💻 CPP
字号:
#include<stdio.h>
#define N 200

main()
{	int a,c,m,k=0,x_0,y_0,i;  
	int x[N],y[N];
	float u_x[N],u_y[N],pi;
    printf("1.a=");          //依次从键盘上输入需要的初值
	scanf("%d",&a);
	printf("  c=");
	scanf("%d",&c);
	printf("  m=");
	scanf("%d",&m);
	printf("  x_0=");
	scanf("%d",&x_0);
	
    x[0]=(a*x_0+c)%m;      //产生两列上的第一个随机数
	
	
	for(i=0;i<N-1;i++)
		{x[i+1]=(a*x[i]+c)%m;   
		
		} 
	
	printf("2.a=");          //再次依次从键盘上输入需要的初值
	scanf("%d",&a);
	printf("  c=");
	scanf("%d",&c);
	printf("  m=");
	scanf("%d",&m);
	printf("  y_0=");
	scanf("%d",&y_0);

	y[0]=(a*y_0+c)%m;
	
	for(i=0;i<N-1;i++)
		{ 
		 y[i+1]=(a*y[i]+c)%m;
		} 
	for(i=0;i<N;i++)
		{u_x[i]=(float)x[i]/m;   //产生(0,1)区间上的数,即伪随机数
	     printf("%.2f ",u_x[i]);//输出显示产生的伪随机数u_x列
		}
	printf("\n");
    for(i=0;i<N;i++)
		{u_y[i]=(float)y[i]/m;  //产生(0,1)区间上的数,即伪随机数
		 printf("%.2f ",u_y[i]);  //输出显示产生的伪随机数u_y列
		}
	
    for(i=0;i<N;i++)
		{if((u_x[i]-(float)1/2)*(u_x[i]-(float)1/2)+(u_y[i]-(float)1/2)*(u_y[i]-(float)1/2)>(float)1/2*1/2)
		 ;	
		 else k++; //k记录满足在内切圆内的掷点的个数
		}
	printf("\n%d",k);
		pi=(float)4*k/N; //计算概率,求出pi值
	printf("\npi=%.2f",pi); //输出pi值 保留两位小数
}

⌨️ 快捷键说明

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