2012-09-04 39 views
0

我正在使用srand(),並且需要在一次執行中使用一組不同種子(如100,200,300,...,1000)來運行測試。這可能嗎?事情是srand()是在main的開頭定義的,所以我不知道如何用變量控制種子。如何在運行時更改srand()

+3

srand()函數可用於任何你想要的。如果你想要一個特定的測試有一個特定的種子,那麼在測試之前調用srand(種子)。 –

+0

只是把代碼放在一個for循環中,並在每次迭代時調用srand aht開頭。 – NoSenseEtAl

+0

您是否在問如何特別修改種子中的變量以便輸出100,200 ...... 1000?或者其他任何序列? – BlueMeanie

回答

3

您可以使用srand(time(NULL)),幷包含time.h頭文件。它用當前系統時間初始化srand()。希望能幫助到你。 !

+2

這對單元測試並不是很有用。在運行單元測試時,您需要rand()返回相同的數字集合,以便在每次測試開始時使用帶有常數值的srand(),以確保獲得一致的結果。 –

0

如果單元測試測試使用rand()的代碼,則應該調用srand(<const>)作爲測試設置的一部分。

這種方式測試行爲以相同的方式是天氣它是一個套件的一部分是獨立運行。

0

對於srand調用中使用的每個不同的種子值,僞隨機數生成器可以預期在隨後的rand調用中生成不同的連續結果。 使用相同種子的兩種不同的初始化,指示僞隨機生成器爲隨後在兩種情況下對rand的調用生成相同的連續結果。

這可能說明:

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

int main() 
{ 
    printf ("First number: %d\n", rand() % 100); 
    srand (time(NULL)); 

    printf ("Random number: %d\n", rand() % 100); 
    srand (1); 

    printf ("Again the first number: %d\n", rand() %100); 
    srand (time(NULL)); 

    printf ("Random number: %d\n", rand() % 100); 

    printf ("Random number: %d\n", rand() % 100); 

    printf ("Random number: %d\n", rand() % 100); 

    printf ("Random number: %d\n", rand() % 100); 

    return 0; 
} 

輸出:

First number: 41 
Random number: 76 
Again the first number: 41 
Random number: 76 
Random number: 14 
Random number: 74 
Random number: 41 
Press any key to continue