srand在C ++中太慢,它返回相同的数字

时间:2012-07-24 03:10:07

标签: c++ random time srand

我只想尝试简单的RndInt(限制)函数,该函数将返回限制为限制的随机数。

    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(限制)给出不同的值。但是当我尝试在没有cin.get()暂停的情况下运行它时,我在所有三个调用中得到相同的数字。我发现问题在于种子在同一秒内。

我的问题是如何调用RndInt返回不同的值而不会暂停。怎么做srand功能?

1 个答案:

答案 0 :(得分:9)

每次想要随机数时都不要致电srand()。在程序开始时调用srand() 一次,然后为每个号码拨打rand()