0 votes

c++ n'est pas aléatoire

Je ne sais pas pourquoi je n'arrive pas à obtenir des valeurs différentes pour mes variables, aidez-moi !

int main()
{
    srand(time(NULL));
    srand48(time(NULL));
    Packet* firstPacket = new Packet();
    firstPacket->packetSize =  randSize();
    firstPacket->dest = randDest();
    firstPacket->arrivalTime = myExp(lamb);
    Host[firstPacket->dest].Frame.push_back(firstPacket);   // adding first packet
    Host[firstPacket->dest].numOfPack++;
    calcFrameSize(Host[firstPacket->dest]);
    cout << Host[token].frameTVTime << " " << Host[token].frameSize
                    << " " << token << " " << curTime << endl;
}

5voto

Duck Points 17054

Sont vos déclarations :

srand(time(NULL));
srand48(time(NULL));

en appelant votre :

inline float time(int size) { return (10.0*(float)size/12500); }

plutôt que l'heure du système ?

Cela expliquerait pourquoi vous n'obtenez pas de nombres aléatoires.

Comme indiqué, time() est un mauvais nom pour cette fonction.

3voto

Igor Krivokon Points 6999

Que contient randSize() et randDest() ? Assurez-vous que ces fonctions n'appellent pas srand() à l'intérieur.

1voto

srand(time(0));

ou

#include <sys/time.h>
timeval tim;
gettimeofday(&tim, NULL);
srand((unsigned int) tim.tv_usec);

0voto

aZn137 Points 885

Voici ce que j'ai pour les autres fonctions.

inline int randSize() { return (rand()%1518 + 64); }

inline int randDest() { return (rand()%10); }

inline float time(int size) { return (10.0*(float)size/12500); }

et voici ce que j'ai dans la console :

~/152a/2phase$ ./phase2
0 0 1 0.01
0.5752 719 6 0.06

J'obtiens ces chiffres de manière constante, alors que je ne pense pas que cela devrait être le cas.

merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X