我这里遇到了一个奇怪的问题,但我找不到好的解释,所以想向大家请教:
考虑以下方法:
int MathUtility::randomize(int Min, int Max)
{
qsrand(QTime::currentTime().msec());
if (Min > Max)
{
int Temp = Min;
Min = Max;
Max = Temp;
}
return ((rand()%(Max-Min+1))+Min);
}
我不会向专家解释这个方法实际上的作用,而是解释我的问题:
我意识到当我在循环中调用这个方法时,有时会一遍又一遍地得到相同的随机数...例如,下面的代码片段...
for(int i=0; i<10; ++i)
{
int Index = MathUtility::randomize(0, 1000);
qDebug() << Index;
}
这将产生类似以下的内容:
567 567 567 567...等等...
我也意识到,如果我不每次调用qsrand函数,而仅在应用程序的生命周期中调用一次,它就可以完美地工作...
我的问题是:为什么?
qsrand(QTime::currentTime().msec());
2:int number = rand() % (100-0+1)+0;
只需将100替换为您的最大值,将0替换为您的最小值即可。 - kayleeFrye_onDeck