1

私は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}
                     ....
    

何か考えはありますか?

4

1 に答える 1