n(0,3.6).cpp

来自「这两个代码原理差不多」· C++ 代码 · 共 63 行

CPP
63
字号
#define N 100000
#define DIV 45                            /*从-9到+5等分35个区间,间距为0.4*/
#define SPACING DIV*0.4
#define MEAN 0
#define VARIANCE 1.8974
#include "math.h"
#include "stdio.h"
main()
{
	

	unsigned int M,C,x,i;
	int j;
	double y[N],mid[100],m,n,normal;
	static int z[100]={0,0};
	
	FILE *fp1,*abscissa1,*ordinate1;
	fp1=fopen("result1.txt","a");
	abscissa1=fopen("abscissa1.txt","a");
	ordinate1=fopen("ordinate1.txt","a");
	normal=-6.0;
	M=(unsigned)pow(2,31)-1;
	C=(unsigned)pow(7,5);
	printf("Please input the initial value x(x>0, integer)");
	scanf("%d",&x);
    printf("M=%d\nC=%d\nx=%d\n\n",M,C,x);
	for(i=1;i<N;i++)
	{
		x=(C*x)%M;
		y[i]=((double)x)/M;
		normal=normal+y[i];
		if(i%12==0)
			{
				normal=VARIANCE*normal+MEAN;
					for(j=-22;j<DIV-22;j++)
						{
							m=SPACING/DIV*j+0.1;
							n=SPACING/DIV*(j+1)+0.1;
								if(normal>=m && normal<=n)
									z[j+22]=z[j+22]+1;	
							mid[j+22]=(m+n)/2;
							
						}
				fprintf(fp1,"%35.4f\n",normal);
				normal=-6.0;
			}
	}
	printf("\n\n\n");
	for(j=0;j<DIV;j++)
		printf("z[%d]=%d\n",j,z[j]);
	         
	for(j=0;j<DIV;j++)
		{
			printf("\n\n%f\t-->\t%f",mid[j],0.163*z[j]/z[22]);
			fprintf(abscissa1,"%f\n",mid[j]);
			fprintf(ordinate1,"%f\n",0.163*z[j]/z[22]);
		}
	printf("\n\n");
fclose(fp1);
fclose(abscissa1);
fclose(ordinate1);

}

⌨️ 快捷键说明

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