【C言語】乱数を扱う方法についてわかりやすく詳しく解説

この記事では、C言語で乱数を生成する方法や乱数の利用方法、そして乱数の注意点について解説します。

乱数の基礎から応用まで、初心者の方にもわかりやすく解説していきます。

目次から探す

乱数の生成方法

プログラミングにおいて、乱数はよく使用される要素の一つです。

乱数を生成することで、ランダムな値を得ることができます。

C言語では、乱数を生成するためにrand関数srand関数が用意されています。

rand関数

rand関数は、0からRAND_MAXまでの範囲の乱数を生成します。

RAND_MAXstdlib.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に設定しています。

この場合、同じシード値を使用しているため、実行するたびに同じ乱数列が生成されます。

再現性のない完全な乱数を生成する場合はsrand(time(NULL))と記述することが一般的です。

乱数の範囲指定

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言語で乱数を生成する方法についての説明です。

乱数を使用する際には、適切なシード値の設定や範囲指定に注意しながらプログラムを作成しましょう。

1 2 3

この記事のページ一覧
  1. 現在のページ
目次から探す