私はアプリケーションに取り組んでいます。私は使用しています:
int rand_num = rand() % 100;
0 から 99 までのランダムな整数を取得するには、41 を取得したとします。アプリケーションを再起動すると、常に 41 になります。同じシーケンスが何度も繰り返されるということは、実際にはランダムではないことを意味します。
解決策はありますか?
アプリケーションを起動するたびにsrand(...)
(通常は を使用して)を呼び出して、シードをランダム化する必要があります。time(0)
これは疑似乱数ジェネレータであることに注意してください。つまり、rand()
関数によって生成される値は均一に分散されません。
rand
はい、疑似乱数を生成します。しかし、種を設定することはできます。
srand(time(NULL));
int rand_num = rand() % 100;
シードは 1 回だけ設定します。
または、 のいずれかの方法を使用できます<random>
。
正しい。rand() は疑似乱数を返します。特定の開始からのシーケンスは決定論的です。srand() を使用して開始点を変更できます。