Cでtime(NULL)を使用してランダムな値を生成するのは何ですか? time(NULL)
このコードの はどういう意味ですか?
int i, zarodek;
zarodek= time(NULL);
srand(zarodek);
int r = rand() % 49 + 1;
printf("%d",r);
システム時刻(秒単位)を取得しています。time_t
オプションで、時刻を受け取る値へのポインターを指定できますが、値はtime
関数から返されるため、代わりに渡すことができますNULL
(関数は null ポインターへの代入を試みません)。
を使用する目的はtime
、乱数ジェネレーターをシードすることです (それを に渡しますsrand
)。通常、プログラムが実行されるたびに時間が異なるため、時間を使用するのが一般的です。
シードは 1 回だけにする必要があることに注意してください ( を呼び出すたびにではありませんrand
)。
つまり、乱数ジェネレーターに現在の時刻をシードしています。これを行わないと、プログラムを実行するたびに同じ乱数列が得られます。
それを試してみてください!
現在の時刻をtimeで返すか、ポインターをターゲット struct に渡すことができますtime_t
。