#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#define PI 3.1415926
double gs(double mu,double theda)
{ double t1,t2,u1,u2,w,n;
do{
t1=rand()/32767.0;
t2=rand()/32767.0;
u1=2.0*t1-1;
u2=2.0*t2-1;
w=pow(u1,2)+pow(u2,2);
}
while(w>1);
n=u1*(sqrt((-2*log(w))/w));
return sqrt(theda)*n+mu;
}
void main()
{ FILE*fp;
int i;
double y1[10000],y2[10000],rayli[10000],z=0.36;
srand((unsigned)time(NULL));
fp=fopen("rayleigh(0.36).xls","w");
for(i=0;i<10000;i++)
{ y1[i]=gs(0,1);
y2[i]=gs(0,1);
rayli[i]=z*sqrt(PI)*sqrt(pow(y1[i],2)+pow(y2[i],2));
printf("%8.2f", rayli[i]);
fprintf(fp,"%6.2f", rayli[i]);
}
fclose(fp);
}
评论0