rand()
で生成される乱数は0以上ある大きな整数値以下の間の任意の
整数になっている。しかし、サイコロを振ったと同じような結果を得たければ、
1,2,3,4,5,6 のどれかの整数になるような乱数が必要となる。これは余りを使う
事によって、実は簡単に得られる。つまり、rand()
を6で割った余りを
考えれば良い。しかし、このままでは得られる余りは 0,1,2,3,4,5 であるので、
サイコロの場合とは一つだけ数がずれている。そこで、1を足してやればサイコロ
と同じになる。例えば次の例のようにプログラムすれば良い。
int seed, dice; seed = 3; srand(seed); dice = rand()%6 + 1; /* 1,2,3,4,5,6 のどれかになっている */ printf("dice : %d\n", dice); |