C言語では,rand()関数を使って乱数を発生させる.例えば,次のようにすると, rand()関数が呼び出される度にその関数が乱数を返し,配列a[i]に格納される.
for(i=0; i<ndata; i++){ a[i]=rand(); }
コンピューターは,正確にプログラムのとおりに計算を行う.そのため,めちゃくちゃな 順序で数が並んでいる乱数を発生させることは苦手である.先ほどのrand()関数は, ある初期値7を使って,計算により乱数を決 めている.同じ初期値をつかうと,同一の数列が発生するこのになる.これで は,乱数とは言い難いので,初期値を毎回変更するのが普通である.そのため,実行毎に 異なる初期値を決める必要がある.現在の暦時刻を返すtime()関数を用いるのが一 般的である.初期値の設定は,srand()関数に引数(符号無し整数) を渡すことによ り可能である.次のようにすれば,毎回異なる初期値を決めることができる.
srand((unsigned int)time(NULL));
乱数を発生させるためには,rand()とsrand(),time()関数が必要である. これらの関数を使うためには,関数の宣言が書かれているヘッダーファイルをインクルー ドしなくてはならない. rand()とsrand()にはstdlib.h,time()にはtime.hである. .したがって,配列a[i]に1024個の乱数を格納するプログラムは次のようにする.
#include <stdlib.h> #include <time.h> int main(void){ int a[1024], i; srand((unsigned int)time(NULL)); for(i=0; i<1024; i++){ a[i]=rand(); } return 0; }