// 乱数を使ってみよう // ポイント1.srand関数で乱数を初期化する // 初期化しないと、毎回同じ乱数列を取得してしまいます。 // ポイント2.rand関数で擬似乱数を取得する // rand()関数の戻り値が擬似乱数なので、お好きなように // ポイント3.余りを求める事で、乱数の範囲を自分の好みに調整できます // rand() % 6; // サイコロ風 0 〜 5 // rand() % 100; // 百分率 0 〜 99 // rand() % 80 + 20; // 20 〜 99 半端な範囲を求める時は、余りを求めて少し数字を足します // rand() % 24; // 手持ちの24個の駒から、ランダムに動かす駒を決めたりもできます // if (rand() % 100 < 20) { ... } // 20%の確率で発生するイベントの管理 // if (rand() % 100 < x) { ... } // 確率x(0 〜 100%)で発生するイベントの管理 #include #include #include #include int main(void) { int i, r, x, c; // ポイント1.srand関数で乱数を初期化する srand(time(NULL )); // ポイント2.rand関数で擬似乱数を取得する // 無加工 0〜RAND_MAX printf("無加工 0〜%d\n", RAND_MAX); for (i = 0; i < 10; i++) { r = rand(); printf("%d, ", rand()); } printf("\n\n"); // ポイント3.余りを求める事で、乱数の範囲を自分の好みに調整できます // rand() % 6; // サイコロ風 0 〜 5 printf("サイコロ風 0〜5\n"); for (i = 0; i < 10; i++) { r = rand() % 6; printf("%d, ", r); } printf("\n\n"); // rand() % 100; // 百分率 0 〜 99 printf("100分率 0〜99\n"); for (i = 0; i < 10; i++) { r = rand() % 100; printf("%d, ", r); } printf("\n\n"); // rand() % 80 + 20; // 20 〜 99 半端な範囲を求める時は、余りを求めて少し数字を足します printf("100分率 0〜99\n"); for (i = 0; i < 10; i++) { r = rand() % 70 + 20; printf("%d, ", r); } printf("\n\n"); // rand() % 24; // 手持ちの24個の駒から、ランダムに動かす駒を決めたりもできます for (i = 0; i < 3; i++) { r = rand() % 24; printf("%d番の駒を動かします\n", r); } printf("\n"); // if (rand() % 100 < 20) { ... } // 20%の確率で発生するイベントの管理 printf("20%%の確率で発生するイベントです。\n"); c = 0; for (i = 0; i < 100; i++) { if (rand() % 100 < 20) { printf("!"); c++; } } printf("\n100回中%d回イベントが発生しました。\n\n", c); // if (rand() % 100 < x) { ... } // 確率x(0 〜 100%)で発生するイベントの管理 x = rand() % 100; c = 0; printf("%d%%の確率で発生するイベントです。\n", x); for (i = 0; i < 100; i++) { if (rand() % 100 < x) { printf("!"); c++; } } printf("\n100回中%d回イベントが発生しました。\n\n", c); return EXIT_SUCCESS; }