2014-09-19 152 views
-2

我有一個函數,可以從函數roll_dice返回一個隨機數,但是當我稱它爲簡單的時候,它給了我相同的數字不知何故,當被稱爲阿吉安時,它並沒有被賦予新的種子。同一個函數多次調用函數內的數字,C

int roll_dice(void){ 
    int random_dice_numbers[2]; 
    int i = 0; 
    int sum = 0; 
    srand(time(NULL)); 

    for(i = 0; i < 2; i++){ 
    random_dice_numbers[i] = rand() % 6+1; 


    } 

    sum = random_dice_numbers[0] + random_dice_numbers[1]; 
    return sum; 

} 

int main(void){ 
int sum = 0; 

sum = roll_dice(); 
printf("You rolled", sum); 

sum = roll_dice(); 
printf("You rolled", sum); 

return 0; 
} 

回答

3

time(NULL)回報秒,你的功能是非常快,所以你可能在這兩個運行相同數量的種子。

你只應該給你的隨機數發生器播種一次。

+0

是的,這是問題,把它改爲main。像魅力一樣工作 – Nicco 2014-09-19 19:19:03

+1

感謝的最佳方式是接受幫助的答案。 :) – Surya 2014-09-19 19:23:28