/* random walk simulation */ #include #include #define max 10000 /* number of steps */ #define seed 11168 /* seed for number generator */ #define SQRT_2 1.4142135623730950488 FILE *output; /* internal file name */ main() { int i,j; double x, y, r[max+1]; output= fopen ("walk.dat", "w"); /* external file name */ for (i=0; i<=max; i++) r[i]=0; /* clear array */ srand48(seed); /* seed the number generatr */ for (j=1; j<=100; j++) /* average over 100 trials */ { x=0; y=0; /* starting point */ for (i=1;i<=max; i++) { x += (drand48()-0.5)*2.0*SQRT_2; /* numbers between */ y += (drand48()-0.5)*2.0*SQRT_2; /* -sqrt(2) and sqrt(2) */ r[i]+=sqrt(x*x+y*y); } } /* write results into file */ for (i=0; i<=max; i++) fprintf(output, "%f\t%f\n", sqrt((double)(i)), r[i]/100.0); fclose (output); }