с ++ не рандомизируется - PullRequest
0 голосов
/ 27 мая 2009

Я не уверен, почему я не могу получить значения diff для моих переменных, помогите!

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

Ответы [ 4 ]

5 голосов
/ 27 мая 2009

Ваши заявления:

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

звонит ваш:

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

а не системное время?

Это объясняет, почему вы не получаете случайные числа.

Как указывалось, time () является недопустимым именем для этой функции.

3 голосов
/ 27 мая 2009

Что есть в randSize () и randDest ()? Убедитесь, что эти функции не вызывают srand () внутри.

1 голос
/ 27 мая 2009
srand(time(0));

или

#include <sys/time.h>
timeval tim;
gettimeofday(&tim, NULL);
srand((unsigned int) tim.tv_usec);
0 голосов
/ 27 мая 2009

это то, что у меня есть для других функций.

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

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

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

и вот что у меня в консоли:

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

Я получаю эти цифры последовательно, что я не думаю, что я должен.

спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...