2014-09-26 60 views
1

我試圖顯示數組中生成的隨機數,但輸出只顯示一個數字多次。我正在調試代碼,並看到數組正在創建隨機數字。我試過在網上尋找答案,但似乎沒有任何東西讓我顯示隨機數字。我是一個超級noob,我感到困惑。任何信息將不勝感激。顯示隨機數組的問題

main() 
{ 
int unSortedNumbers[10] = { 0 }, i = 0; 

for (i = 0; i < US; i++){ 
    srand((unsigned)time(NULL)); 
    unSortedNumbers[i] = LB + rand() % (UB - LB + 1); 
} 
for (i = 0; i < US; i++) 
    printf("number %i) is %i.\n", i, unSortedNumbers[i]); 
    pause; 
} 

回答

2

嘗試循環之前移動srand

所有的
srand((unsigned)time(NULL)); 
for (i = 0; i < US; i++){ 
    unSortedNumbers[i] = LB + rand() % (UB - LB + 1); 
} 

首先,srand是應該產生一個隨機序列之前調用一次。

其次,解釋你所觀察到的,time回報time_t

由於歷史的原因,一般實現爲代表的秒數的整數值距今....

因此,也許所有對time的調用都發生在同一秒內,srand用相同的種子初始化。因此相同的數字。

+0

你是男人的英雄!非常感謝,它工作完美! – Brandon 2014-09-26 22:07:57

+0

@Brandon我剛剛添加了幾行來解釋相同數字的可能原因。 (不管「srand」應該使用一次)。 – AlexD 2014-09-26 22:16:25