C言語で乱数の範囲を制御する方法は何ですか。
C言語では、rand()関数を使ってランダムな数を生成することができますが、デフォルトでは0からRAND_MAXの間の整数が生成されます。ランダムな数の範囲を制御したい場合は、数学的な計算を使用して実現することができます。
例えば、0からNまでの範囲内のランダムな数を生成したい場合は、以下のコードを使用することができます:
int random_number = rand() % (N + 1);
上記のコードでは、rand() % (N + 1)は、0からNの間の余りを生成します。そして、余りの範囲はちょうど0からNです。そのため、この方法で0からNまでのランダムな数を生成することができます。
M < N で指定された範囲のランダムな数を生成したい場合は、次のコードを使用できます。
int random_number = M + rand() % (N - M + 1);
上記のコードでは、rand() % (N – M + 1)は、0からN-Mまでの範囲の余りを生成し、さらにMを加えることで、余りの範囲をMからNに変えることができます。したがって、この方法を使って、MからNの間のランダムな数を生成することができます。
上記のコードでは、rand()関数は依然として0からRAND_MAXの範囲内のランダムな数値を生成することに注意してください。したがって、より広い範囲のランダムな数値を生成したい場合は、上記のコードを複数回呼び出すことで実現できます。