-1

制限として制限のある乱数を返す単純な RndInt(limit) 関数を使用しようとしています。

    cout << "Enter higher limit of random range:" ;
 cin >> limit;
 while(limit != 0)

{
//        RndInt(limit);
    cout << "Random number smaller than " << limit << " is " << RndInt(limit) << endl;
    cin.get();
    cin.get();
    cout << "Other random number smaller than " << limit << " is " << RndInt(limit) << endl;
    cin.get();
    cin.get();
    cout << "There is " << RndInt(limit) << " ways I love you" <<endl ;
    cout << "Enter higher limit of random range:" ;
    cin >> limit;
}
return 0;
}

int RndInt(int limit)
{
srand(time(&base));
int rndnumber;
rndnumber=rand()%limit;
base+=100;
return rndnumber;
}

RndInt の後続の呼び出しで異なる整数が表示されるようにするのに問題があります。RndInt(limit) への後続の細かい呼び出しをデバッグすると、異なる値が返されます。しかし、一時停止のために cin.get() を使用せずに実行しようとすると、3 つの呼び出しすべてで同じ番号が取得されます。問題は、シードが同じ秒にあることです。

私の質問は、RndInt への呼び出しを中断せずに異なる値を返す方法です。srand 関数をどうするか?

4

1 に答える 1

10

srand()乱数が必要になるたびに呼び出す必要はありません。プログラムの開始時にsrand() 1 回電話してからrand()、各番号に電話します。

于 2012-07-24T03:12:23.090 に答える