2012-03-14 44 views
2

可能重複:
Generating random numbers in C
using rand to generate a random numbers爲什麼rand()總是返回相同的值?

我試圖生成隨機數,但我不斷收到數41 什麼可能會在這樣的錯一個簡單的片段?

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int a = rand(); 
    printf("%d",a); 
    return 0; 
} 

感謝您的幫助。

+1

這已經被問過無數次的SO;搜索「C中的隨機數」將提供許多答案。我連接的那個和你一樣製作'41'完全一樣。 – 2012-03-14 22:15:30

+0

我很確定41是隨機選擇的。我只是試圖挑選一個隨機數,並沒有得到41. – 2012-03-14 22:15:40

+6

如此接近。 42會更好... – 2012-03-14 22:16:31

回答

9

你需要給不同的種子,例如:

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
int main(void) 
{ 
    int a; 
    srand (time(NULL)); 
    a = rand(); 
    printf("%d",a); 
    return 0; 
} 
2

您需要種子發生器。

這是預期的。原因是結果的可重複性。假設您使用隨機序列進行一些測試,並且經過特定時間或迭代後您的測試失敗。如果你保存種子,你可以重複測試來複制/調試。種子與當前時間從毫秒的紀元,你得到隨機隨意(如果你認爲你需要重複結果保存種子)。

+0

當我使用(讓我們說:12)srand (12)之前,數字發生了變化,但仍然保持不變 – Umut 2012-03-14 22:16:30

+0

@UmutŞenaltan:種子具有相同的值將*創建相同的隨機序列。請參閱https://en.wikipedia.org/wiki/Pseudorandom_number_generator – 2012-03-14 22:18:16

+1

這是預期的。原因是結果的可重複性。假設您使用隨機序列進行一些測試,並且經過特定時間或迭代後您的測試失敗。如果你保存種子,你可以重複測試來複制/調試。種子與當前時間從毫秒的紀元,你得到隨機隨意(如果你認爲你需要重複結果保存種子)。 – Java42 2012-03-14 22:21:31

相關問題