この記事では、C言語で乱数を生成する方法や乱数の利用方法、そして乱数の注意点について解説します。
乱数の基礎から応用まで、初心者の方にもわかりやすく解説していきます。
乱数の生成方法
プログラミングにおいて、乱数はよく使用される要素の一つです。
乱数を生成することで、ランダムな値を得ることができます。
C言語では、乱数を生成するためにrand関数
とsrand関数
が用意されています。
rand関数
rand関数
は、0からRAND_MAXまでの範囲の乱数を生成します。
RAND_MAX
はstdlib.h
ヘッダーファイルで定義されており、プラットフォームによって異なる値が設定されています。
以下は、rand関数
を使用して乱数を生成する例です。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i;
// 現在の時刻をシード値として設定
srand(time(NULL));
// 10回乱数を生成して表示
for (i = 0; i < 10; i++) {
printf("%d\n", rand());
}
return 0;
}
上記のコードでは、srand関数
を使用して乱数のシード値を設定しています。
シード値は乱数の初期値を決定するため、実行するたびに異なる乱数列が生成されます。
time(NULL)
をシード値として使用することで、現在の時刻を取得してシード値として設定しています。
srand関数
srand関数
は、rand関数
で生成される乱数のシード値を設定します。
シード値を設定することで、同じシード値を使用した場合には同じ乱数列が生成されます。
以下は、srand関数
を使用して乱数のシード値を設定する例です。
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
// シード値を設定
srand(1234);
// 10回乱数を生成して表示
for (i = 0; i < 10; i++) {
printf("%d\n", rand());
}
return 0;
}
上記のコードでは、srand関数
を使用してシード値を1234に設定しています。
この場合、同じシード値を使用しているため、実行するたびに同じ乱数列が生成されます。
乱数の範囲指定
rand関数
は、0からRAND_MAXまでの範囲の乱数を生成しますが、特定の範囲の乱数を生成したい場合もあります。
その場合は、生成された乱数を指定の範囲に変換する必要があります。
以下は、0から9までの範囲の乱数を生成する例です。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i;
// 現在の時刻をシード値として設定
srand(time(NULL));
// 10回乱数を生成して表示
for (i = 0; i < 10; i++) {
int random = rand() % 10; // 0から9までの範囲に変換
printf("%d\n", random);
}
return 0;
}
上記のコードでは、rand関数
で生成された乱数を10で割ることで、0から9までの範囲に変換しています。
このように、乱数を生成した後に範囲を指定することで、特定の範囲の乱数を得ることができます。
以上が、C言語で乱数を生成する方法についての説明です。
乱数を使用する際には、適切なシード値の設定や範囲指定に注意しながらプログラムを作成しましょう。