1

私はアプリケーションに取り組んでいます。私は使用しています:

int rand_num = rand() % 100;

0 から 99 までのランダムな整数を取得するには、41 を取得したとします。アプリケーションを再起動すると、常に 41 になります。同じシーケンスが何度も繰り返されるということは、実際にはランダムではないことを意味します。

解決策はありますか?

4

4 に答える 4

7

アプリケーションを起動するたびにsrand(...)(通常は を使用して)を呼び出して、シードをランダム化する必要があります。time(0)これは疑似乱数ジェネレータであることに注意してください。つまり、rand()関数によって生成される値は均一に分散されません。

于 2013-02-13T09:06:47.433 に答える
4

randはい、疑似乱数を生成します。しかし、種を設定することはできます。

srand(time(NULL));
int rand_num = rand() % 100;

シードは 1 回だけ設定します。

または、 のいずれかの方法を使用できます<random>

于 2013-02-13T09:07:16.220 に答える
3

以下を使用します。

#include<time.h>

srand(time(NULL));

擬似乱数ジェネレーターのシードを変更します。

詳細については、こちらを参照してください。

于 2013-02-13T09:07:06.327 に答える
3

正しい。rand() は疑似乱数を返します。特定の開始からのシーケンスは決定論的です。srand() を使用して開始点を変更できます。

于 2013-02-13T09:07:07.103 に答える