/*********************************************************************** * * File: histo.c (16-Jun-2001) * (20-Jun-2005) * * Mittelwert, Varianz und Wahrscheinlichkeitsdichte der * gleichverteilten Zufallsvariablen x auf dem Intervall [0,1] * * nbins.........Anzahl der Histogrammkanaele * n.............Stichprobenumfang * "histo.dat"...Ausgabefile fuer Histogramm * **********************************************************************/ #include #include /**********************************************************************/ int main () { /**********************************************************************/ FILE *fp; int i,k,n,nbins; int *ihist; const double a=0.0,b=1.0; double ax,axx,x; printf(" nbins="); scanf("%d",&nbins); printf(" n="); scanf("%d",&n); ihist=(int*)malloc(nbins*sizeof(int)); ax=0.0; axx=0.0; for(k=0;k<=nbins-1;k=k+1) { ihist[k]=0; } for(i=1;i<=n;i=i+1) { x=a+(b-a)*drand48(); ax=ax+x; axx=axx+x*x; k=(x-a)/(b-a)*nbins; if(k>=nbins-1) { k=nbins-1; } ihist[k]=ihist[k]+1; } printf(" =%14.7e\n",ax/n); printf(" Var(x)=%14.7e\n",(axx-ax*ax/n)/(n-1)); fp=fopen("histo.dat","w"); for(k=0;k<=nbins-1;k=k+1) { x=a+(k+0.5)*(b-a)/nbins; fprintf(fp," %14.7e %14.7e\n",x,((double)ihist[k])*nbins/(n*(b-a))); } fclose(fp); return 0; } /**********************************************************************/