2012-09-13 197 views
-2

我已經寫下面的代碼C.生成隨機數Ç隨機數發生器

int main (int argc, char *argv[]) 
{ 
    unsigned int iseed = (unsigned int)time(NULL); 
    srand (iseed); 

    /* Generate random number*/ 
    int i; 
    for (i = 0; i < 1; i++) 
    { 
     printf ("Random[%d]= %u\n", i, rand()); 
    } 
    return 0; 
} 

輸出給我一個10位數的隨機數,如何可以改變在輸出打印的數字的數量?

+0

您試圖解決什麼問題? –

+0

你問如何讓rand返回一個更大的數字,如何讓printf語句顯示更多/更少的數字? – selbie

+0

另外,RAND_MAX在許多系統上通常爲32767。因此,根據編譯的位置,您的代碼最多隻能是5位數字。 – selbie

回答

3

rand()給出一個介於0和RAND_MAX之間的數字,可能是一個很大的數字。

如果你想在範圍[0, N)得到一個統一的樣本,你需要的範圍內劃分成多個區域:

int my_max = (RAND_MAX/N) * N; 

int result; 

while ((result = rand()) >= my_max) { } // #1 

return result % N; 

上線#1條件應該僅僅滿足很少,但我們需要重新在結果不在N的倍數範圍內的情況下滾動以避免出現高結果偏差。