L'utilisation de qsrand, aléatoire méthode qui n'est pas aléatoire

Je vais avoir un problème étrange ici, et je n'arrive pas à trouver une bonne explication à ça, alors j'ai pensé à demander à vous les gars :

Envisager la méthode suivante :

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

Je ne vais pas vous expliquer ce que les gourous de cette méthode en fait, je vais plutôt vous expliquer mon problème :

Je l'ai compris quand j'ai appeler cette méthode dans une boucle, parfois, j'obtiens le même nombre aléatoire, encore et encore... Pour exemple, cet extrait...

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

...va produire quelque chose comme :

567
567
567
567...etc...

J'ai réalisé aussi que si je ne l'appelez pas qsrand à chaque fois, mais une seule fois lors de ma demande de son vivant, il fonctionne parfaitement...

Ma question : Pourquoi ?

InformationsquelleAutor Andy M | 2010-05-04