C言語 | 高度な機能 | 乱数 - rand(), srand()
C標準ライブラリには疑似乱数を生成する関数があります。
ランダムな値を得る
rand() は stdlib.h で宣言されています。
int rand(void);
0 から RAND_MAX までの整数を返します。同じ初期シードからは同じ数列が生成されるため、完全な乱数ではなく疑似乱数です。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int iCount;
printf("RAND_MAX = %d\n", RAND_MAX);
for (iCount = 0; iCount < 10; iCount++)
printf("乱数 %d = %d\n", iCount, rand());
return 0;
}
シードを設定するには srand() を使います。
void srand(unsigned int seed);
実行ごとに異なる数列が必要な場合は、現在時刻を使う方法が一般的です。
#include <stdlib.h>
#include <time.h>
srand((unsigned int)time(NULL));
0.0 以上 1.0 未満の値を得るには、RAND_MAX + 1.0 で割ります。
#undef random
#define random() ((double)rand() / ((double)RAND_MAX + 1.0))
rand() はシミュレーションや簡単なゲームには使えますが、暗号用途には適していません。