📄 n(-2,1).cpp
字号:
#define N 100000
#define DIV 35 /*从-8.7到+9.3等分45个区间,间距为0.4*/
#define SPACING DIV*0.4
#define MEAN -2
#define VARIANCE 1
#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 *fp,*abscissa,*ordinate;
fp=fopen("result2.txt","w");
abscissa=fopen("abscissa2.txt","w");
ordinate=fopen("ordinate2.txt","w");
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.2;
n=SPACING/DIV*(j+1)-0.2;
if(normal>=m && normal<=n)
z[j+22]=z[j+22]+1;
mid[j+22]=(m+n)/2;
}
fprintf(fp,"%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.399*z[j]/z[17]);
fprintf(abscissa,"%f\n",mid[j]);
fprintf(ordinate,"%f\n",0.399*z[j]/z[17]);
}
printf("\n\n");
fclose(fp);
fclose(abscissa);
fclose(ordinate);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -