/*** 2d random work program by uniform random number ***/ /*** K.S, KU, 2025/7/3 ***/ #include #include /* for random function parameter */ #define NR 100000 main() { int rx, ry, ixy[NR][NR], rxmin, rxmax, rymin, rymax; int i, j, nstep = 10000; int ir; FILE *fp; rxmin = -500; rxmax = 500; rymin = -500; rymax = 500; for (i = rxmin; i <= rxmax; i++) { for (j = rymin; j <= rymax; j++) ixy[i-rxmin][j-rymin] = 0; } /* open trajectory file */ fp = fopen("xytrajectory.dat", "w"); rx = 0; ry = 0; for (i = 0; i < nstep; i++) { ir = rand(); /* built-in random number generator */ /* (rand() will generate between [0,RAND_MAX)) */ /* RAND_MAX is system-built-in parameter */ if ((double)ir / RAND_MAX < 0.25) { rx--; /* left: -x */ } else if ((double)ir / RAND_MAX >= 0.25 && (double)ir / RAND_MAX < 0.50) { rx++; /* right:+x */ } else if ((double)ir / RAND_MAX >= 0.50 && (double)ir / RAND_MAX < 0.75) { ry--; /* down: -y */ } else if ((double)ir / RAND_MAX >= 0.75) { ry++; /* up: +y */ } ixy[rx-rxmin][ry-rymin]++; /* fprintf(stderr, "%d %d %d\n", i, rx, ry); */ fprintf(fp, "%d %d %d\n", i, rx, ry); } fclose(fp); for (i = rxmin; i <= rxmax; i++) { for (j = rymin; j <= rymax; j++) if(ixy[i-rxmin][j-rymin] != 0) printf("%5d %5d %5d\n", i, j, ixy[i-rxmin][j-rymin]); } }