C言語で生成した乱数を一定の値で固定の方法
C言語の擬似乱数生成関数srand()とrand()を使用して、乱数を生成してから固定値を得ることができます。具体的な手順を以下に示します。
- time()関数を用いて現在の時刻を乱数生成器のシードとして取得する。このためにはtime.hヘッダファイルが必要。
- srand()関数を用いて乱数発生器のseedをセットします。srand()関数にはtime()関数の戻り値が引き数として渡されます。
- srand() 関数で設定したシード値に基づいて、rand() 関数で疑似乱数を生成します。
- 乱数の範囲を制御するには、%演算子を使用して剰余を求めています。たとえば、1~10の乱数を生成する場合、rand() % 10 + 1を使用します。
- srand() 関数に同一のシード値を与えると、プログラムを実行するたびに常に同一の数列の疑似乱数が得られるので、固定の乱数列を生成したいときなどに使用できます。
次のコードがその一例だ。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i;
int fixedNum = 5; // 要固定的数字
// 设置随机数生成器的种子
srand(time(NULL));
// 生成随机数并固定数字
for (i = 0; i < 10; i++) {
int randomNumber = rand() % 10 + 1; // 生成1到10之间的随机数
printf("%d\n", randomNumber + fixedNum);
}
return 0;
}
このコードを実行すると、固定された乱数列が生成され、各乱数に固定された数値5が加算されます。