2015-12-02 44 views
-1
void getRandomWords() 
{ 
int n, i = 0; 
do 
{ 
    srand((int)time(NULL)); 
    n = rand() % 10; 
    for (int j = 0; j < 10; j++) { 
     printf("%c\n", words[n][j]); 
    } 
    i ++; 
}while(i < 4); 
} 

我寫上面的代碼,以便選擇從字的陣列4個隨機字如下:從詞語的2D陣列選擇一個隨機字

char words[10][10] = {"dog", "cat", "horse", "cow", "goat", "monkey", "elephant", "crow", "fish", "snake"}; 

當我執行prgram相同隨機單詞被顯示4次,但是當我運行調試器時,一切似乎都工作正常! (正在顯示4個不同的單詞)。有人能告訴我這裏發生了什麼嗎?

+0

可能重複[調用rand()返回非隨機結果](http://stackoverflow.com/questions/9686271/calling-rand-returning-non-random-results) – usr2564301

回答

3

您只需種子一次。

,就把這行

srand((int)time(NULL)); 

外循環。

rand()函數的設計使得它將產生給定種子的相同數字序列。由於內部循環可能會很快發生,因此您會看到相同的數字序列。

+0

該死的,感謝的傢伙...另外我需要幫助才能實現某些功能,以便同一個單詞不能被隨機選擇兩次......如果隨機選擇了每個單詞,我試圖設置一個「int」變量爲「1」。請問有更可行的方法嗎?再次感謝人! –

+0

@DavidFarrugia做出一系列可能的迴應。從數組長度中隨機選取一個索引。然後將最後一個數組元素複製到間隙中,並減少下一個隨機選擇的選擇數量。 –

+0

@WeatherVane嗯,我沒有想到這一點。謝謝你:) –