この関数の目的
srand()は、偽乱数のシードを設定する。
定義
#include <stdlib.h> void srand(unsigned int seed);
働き
この関数は seed を rand() が返す新しい乱数列のシードとして使う。 srand() が同じシード値で呼ばれるならば、乱数列も同じものが繰り返されなければならない。 srand() よりも rand() が先に呼ばれた場合、 srand() に 1 を渡したのと同じ乱数列が発生しなければならない。
処理系はライブラリ関数が一度も srand() を呼ばないかのように動作する。
解説
シード(seed)とは英語で「種」という意味であり、文字通り乱数列の木が育つのに必要な種であるといえる。 コンピュータというやつは、種がないと全くでたらめな数字が思いつけないのである。
実行時に一度も srand() を呼ばないと、rand() の返す乱数列が常に( srand(1)
としたのと)同じものになってしまう。
これを回避するには、以下のようにシステム時間で初期化するのが最も素直な方法だ。
srand((unsigned)time(NULL));