私はC++が初めてで、数時間しか使用していません。
配列/ベクトルに 1 から 255 までのランダムな値 (ランダム化された IP アドレスの場合) を設定する関数を作成したいと考えています。
私はこれを作成しました:
vector<int> gen_ip_tuple(){
int sh_rand;
vector<int> vect_tuple;
srand(time(NULL)); // initialize random seed
for (int i = 0; i < 4; i++){
sh_rand = rand() % 255 + 1; // between 1 to 255
cout << sh_rand << endl;
vect_tuple.push_back(sh_rand);
}
return vect_tuple;
}
一度呼び出せばうまくいきます。
しかし、この関数を数回呼び出すと、毎回同じ 4 タプルの結果が生成されます。
srand(time(NULL))
ランダムシードを持っていたのでわかりません。
このシードは関数で設定されるため、毎回新しくする必要があります。
要約すれば:
プログラムが再実行されるたびに、4 タプルはランダムになります (前回の実行とは異なります)。
first run = {67,127,115,45} second run ={157,142,16,93}
関数が呼び出されるたびに、同じ結果が生成されます。
first call = {157,142,16,93} second call ={157,142,16,93} ....
何か考えはありますか?