/* WIDTH を正の定数とする。ある点が、位置 WIDTH から出発して、0 と 2 * WIDTH の間をランダムに動く。 具体的には、単位時間に、確率 1/2 で負の方向へ 1 だけ、確率 1/2 で正の方向へ 1 だけ動く。 その様子を、縦軸に時刻、横軸に位置をとって示すもの。「g」の字が、蟻(アリ)の行列のように画面に並ぶ。 速すぎるとおもしろくないので、時間かせぎのための空(から)ループを設けてある。 0, ..., 2 * WIDTH の範囲からはずれればプログラムは終了する。 */ #include #include /* rand() */ #include /* time() */ #define WIDTH 50 main() { int i, j; int x; /* 位置 */ int count; /* 何ステップ目かを示す数 */ { /* この中カッコの中(乱数の種の設定)はわからなくてもよい */ unsigned seed = (unsigned)time(NULL); /* 現在時刻を取得して */ printf("乱数の種は %u です.\n", seed); srand(seed); /* それを乱数の種に */ } count = 0; for (x = WIDTH; x >= 0 && x <= 2 * WIDTH; count++) { printf("%6d %3d ", count, x - WIDTH); /* 次から、点のプロットが始まる */ printf("|"); /* 左端の枠 */ for (i = 0; i < x; i++) { printf(" "); } printf("g"); /* これが点。「g」の字は蟻(アリ)に似ているので選んだもの */ for (i = x; i < 2 * WIDTH; i++) { printf(" "); } printf("|\n"); /* 右端の枠を書いて、これでプロット終了 */ if (rand() % 2 == 0) { /* 0 または 1 に値をとる乱数を発生させ、その結果で */ x--; /* 左か */ } else { x++; /* 右へ */ } for (i = 0; i < 10000; i++) { /* 速すぎるとおもしろくないので、時間かせぎのための */ for (j = 0; j < 5000; j++) { /* 空(から)ループ。回る回数を変えれば速度が変わる */ ; } } } }