2

Cでtime(NULL)を使用してランダムな値を生成するのは何ですか? time(NULL)このコードの はどういう意味ですか?

 int i, zarodek;
    zarodek= time(NULL);
    srand(zarodek);
    int r = rand() % 49 + 1;
    printf("%d",r);
4

3 に答える 3

5

システム時刻(秒単位)を取得しています。time_tオプションで、時刻を受け取る値へのポインターを指定できますが、値はtime関数から返されるため、代わりに渡すことができますNULL(関数は null ポインターへの代入を試みません)。

を使用する目的はtime、乱数ジェネレーターをシードすることです (それを に渡しますsrand)。通常、プログラムが実行されるたびに時間が異なるため、時間を使用するのが一般的です。

シードは 1 回だけにする必要があることに注意してください ( を呼び出すたびにではありませんrand)。

于 2012-11-18T23:39:59.137 に答える
3

つまり、乱数ジェネレーターに現在の時刻をシードしています。これを行わないと、プログラムを実行するたびに同じ乱数列が得られます。

それを試してみてください!

于 2012-11-18T23:39:59.573 に答える
0

現在の時刻をtimeで返すか、ポインターをターゲット struct に渡すことができますtime_t

于 2012-11-18T23:39:56.317 に答える