/* Driver for routine gasdev */ #include #define NRANSI #include "nr.h" #define N 20 #define NOVER2 (N/2) #define NPTS 10000 #define ISCAL 400 #define LLEN 50 int main(void) { char words[LLEN+1]; int i,j,k,klim,dist[N+1]; long idum=(-13); float dd,x; for (j=0;j<=N;j++) dist[j]=0; for (i=1;i<=NPTS;i++) { x=0.25*N*gasdev(&idum); j=(int)(x > 0 ? x+0.5 : x-0.5); if ((j >= -NOVER2) && (j <= NOVER2)) ++dist[j+NOVER2]; } printf("Normally distributed deviate of %6d points\n",NPTS); printf ("%5s %10s %9s\n","x","p(x)","graph:"); for (j=0;j<=N;j++) { dd=(float) dist[j]/NPTS; for (k=1;k<=LLEN;k++) words[k]=' '; klim=(int) (ISCAL*dd); if (klim > LLEN) klim=LLEN; for (k=1;k<=klim;k++) words[k]='*'; printf("%8.4f %8.4f ",j/(0.25*N),dd); for (k=1;k<=LLEN;k++) printf("%c",words[k]); printf("\n"); } return 0; } #undef NRANSI