相关疑难解决方法(0)

使用qsrand,随机方法不是随机的

我在这里遇到一个奇怪的问题,我无法找到一个好的解释,所以我想问你们:

请考虑以下方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

我不会向大家解释这个方法实际上做了什么,我会解释我的问题:

我意识到,当我在循环中调用此方法时,有时候,我会一遍又一遍地得到相同的随机数...例如,这个片段......

for(int i=0; i<10; ++i)
{
    int Index = MathUtility::randomize(0, 1000);
    qDebug() << Index;
}
Run Code Online (Sandbox Code Playgroud)

...会产生类似的东西:

567 567 567 567 ...等......

我也意识到,如果我不是每次都调用qsrand,而是在我的应用程序的生命周期中只调用一次,那么它的工作正常...

我的问题:为什么?

random qt

18
推荐指数
1
解决办法
2万
查看次数

标签 统计

qt ×1

random ×1