c ++不随机化

时间:2009-05-27 00:43:41

标签: c++ random

我不知道为什么我不能在这里得到我的变量的差值,帮助!

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 个答案:

答案 0 :(得分:5)

您的陈述是:

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

打电话给你:

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

而不是系统时间?

这可以解释为什么你没有得到随机数字。

正如所指出的,time()是该函数的错误名称。

答案 1 :(得分:3)

randSize()和randDest()中有什么?确保这些函数不调用srand()。

答案 2 :(得分:1)

srand(time(0));

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

答案 3 :(得分:0)

这就是我对其他功能所拥有的。

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

我持续得到这些数字,我认为不应该这样。

感谢。