2009-05-27 39 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);