2009-05-27 40 views
0

我不知道为什么我不能为我的变量得到差异值,帮助!C++不随机

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

您的randSize()和randDest遗漏码()。 – Michael 2009-05-27 00:49:16

+0

这是不是很清楚你想要做什么。一些基本的解释是为了。你能否也显示randSize()和randDest()的代码? – 2009-05-27 00:49:20

回答

5

是你的语句:

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

呼唤你:

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

而不是系统时间?

这将解释为什么你没有得到随机数。

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

3

randSize()和randDest()是什么?确保这些函数不会在里面调用srand()。

+1

+1:几乎没有任何信息,这是我能想象的最佳猜测。 – ojrac 2009-05-27 00:51:28

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 

我得到这些数字一致,这我不认为我应该的。

谢谢。

1
srand(time(0)); 

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