スポンサーリンク
範囲指定して乱数を生成する
rand()を使って乱数を生成した場合、rand()の出力は0〜RAND_MAXの値になります。
そこで、任意の値を範囲指定して、乱数を生成する場合には、
下記のように、乱数を生成したい範囲の最小値と最大値を設定しとします。
ただし、今回の場合は正の整数の範囲で範囲指定するとします。
#define MIN (3) #define MAX (9)
RANGEを下記のように定義して、
#define RANGE ((MAX) - (MIN) + 1)
MIN + rand() % RANGE とすれば、範囲指定した値で乱数を生成できます。
printf("%d\n", MIN + rand() % RANGE);
スポンサーリンク
サンプルコード
下記がサンプルコードになります。
#include <stdio.h> #include <stdlib.h> #include <time.h> #define LOOP_MAX (15) #define MIN (3) #define MAX (9) #define RANGE ((MAX) - (MIN) + 1) int main(){ int i; srand((unsigned int)time(NULL)); printf("RAND_MAX=%d\n\n", RAND_MAX); for (i = 0; i < LOOP_MAX; i++){ printf("%d\n", rand()); } for (i = 0; i < LOOP_MAX; i++){ printf("%d\n", MIN + rand() % RANGE); } return 0; }
下記が実行結果になります。
$ gcc -o sample sample.c ;./sample RAND_MAX=2147483647 127975474 1252660871 1689067356 568722599 71008596 1588048887 1410878893 127124477 1982339821 1124071989 864276464 315142140 899273478 99437160 498070754 4 6 9 6 8 9 9 7 7 4 6 9 3 3 5
スポンサーリンク