Use of qsrand, random method that is not random

Posted by Andy M on Stack Overflow See other posts from Stack Overflow or by Andy M
Published on 2010-05-04T17:11:39Z Indexed on 2010/05/04 17:18 UTC
Read the original article Hit count: 611

Filed under:
|
|

Hey everyone,

I'm having a strange problem here, and I can't manage to find a good explanation to it, so I thought of asking you guys :

Consider the following method :

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);
}

I won't explain you gurus what this method actually does, I'll instead explain my problem :

I realised that when I call this method in a loop, sometimes, I get the same random number over and over again... For example, this snippet...

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

...will produce something like :

567 567 567 567...etc...

I realised too, that if I don't call qsrand everytime, but only once during my application's lifetime, it's working perfectly...

My question : Why ?

© Stack Overflow or respective owner

Related posts about qt

Related posts about random