【C言語】少数を含めた範囲の乱数を生成する方法を解説

この記事では、C言語で少数を含めた範囲の乱数を生成する方法について解説します。

目次から探す

少数を含めた範囲の乱数生成

乱数を生成することは、プログラミングにおいて非常に重要な要素です。

C言語では、標準ライブラリのstdlib.hに含まれるrand()関数を使用して乱数を生成することができます。

しかし、デフォルトでは整数の範囲の乱数しか生成することができません。

本記事では、少数を含めた範囲の乱数を生成する方法について解説します。

乱数の範囲を制限する

まず、乱数の範囲を制限する方法について説明します。

C言語では、rand()関数が0からRAND_MAXまでの範囲の整数を生成します。

RAND_MAXは、stdlib.hに定義されている定数で、乱数の最大値を表します。

例えば、0から10までの範囲の乱数を生成したい場合、以下のようなコードを使用します。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    srand(time(NULL)); // 乱数のシードを設定
    int min = 0;
    int max = 10;
    int randomNum = min + rand() % (max - min + 1);
    printf("乱数: %d\n", randomNum);
    return 0;
}

上記のコードでは、srand()関数を使用して乱数のシードを設定しています。

乱数のシードを設定することで、実行するたびに異なる乱数が生成されます。

rand()関数を使用して乱数を生成し、範囲を制限するためにminmaxを使用しています。

%演算子を使用して、範囲内の整数を取得しています。

少数を含めた乱数生成

次に、少数を含めた範囲の乱数を生成する方法について説明します。

C言語では、rand()関数は整数の乱数しか生成できませんが、少数を含めた範囲の乱数を生成するためには、いくつかの手法があります。

一つの方法は、整数の乱数を生成した後に、それを少数に変換する方法です。

例えば、0から1までの範囲の少数を生成したい場合、以下のようなコードを使用します。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    srand(time(NULL)); // 乱数のシードを設定
    int randomInt = rand(); // 整数の乱数を生成
    double randomDouble = (double)randomInt / RAND_MAX; // 整数を少数に変換
    printf("乱数: %f\n", randomDouble);
    return 0;
}

上記のコードでは、rand()関数を使用して整数の乱数を生成し、それをRAND_MAXで割ることで0から1までの範囲の少数を得ています。

また、C言語では、random()関数を使用して範囲の少数を生成することもできます。

random()関数は、stdlib.hに含まれる関数で、0からRAND_MAXまでの範囲の整数を生成します。

以下のようなコードを使用して、0から1までの範囲の少数を生成することができます。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    srand(time(NULL)); // 乱数のシードを設定
    double randomDouble = (double)random() / RAND_MAX; // 整数を少数に変換
    printf("乱数: %f\n", randomDouble);
    return 0;
}

上記のコードでは、random()関数を使用して整数の乱数を生成し、それをRAND_MAXで割ることで0から1までの範囲の少数を得ています。

以上が、C言語で少数を含めた範囲の乱数を生成する方法の解説です。

乱数の範囲を制限する方法や、少数を含めた乱数生成の方法を理解することで、より柔軟な乱数生成が可能になります。

目次から探す