1. 程式人生 > >windows和linux下srand()、rand()、time()、Sleep()\sleep()函式的用法

windows和linux下srand()、rand()、time()、Sleep()\sleep()函式的用法

srand()函式用於初始化隨機種子,rand()函式用於產生隨機數。

rand()函式的用法:

需要的標頭檔案:#include <stdlib.h>

定義函式 :int rand(void)

rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因為其週期特別長,所以有一定的範圍裡可看成是隨機的,rand()會返回一隨機數值,範圍在0至RAND_MAX 間。在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。rand()產生的是假隨機數字,每次執行時是相同的。若要不同,每次用srand()生成不同的隨機數種子。

返回0至RAND_MAX之間的隨機整數值,RAND_MAX的範圍最少是在32767之間(int),即雙位元組(16位數)。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。0~RAND_MAX每個數字被選中的機率是相同的。

常見用法:

如使用rand()函式產生1-100以內的隨機整數:int number1 = rand()%100;

srand()函式的用法:

需要的檔案:#include <stdlib.h> 

定義函式:void srand (unsigned int seed);

srand()用來設定rand()產生隨機數時的隨機數種子。引數seed必須是個整數,如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

我們如何才能產生不可預見的隨機序列呢?

常見的用法:

srand((unsign)time(NULL或0));//利用time函式返回的時間作為引數seed,這樣srand產生的隨機數種子就會不斷變化

int number1 = rand()%100;//這樣我們每次就會得到不同的隨機數,%後的數字可以限定隨機數的範圍

sleep(1);//如果上面3條語句都在迴圈中,sleep幾秒適當加大時間間隔可以使隨機數更加隨機

注意:

time()函式需要使用標頭檔案:#include <time.h>

Sleep()\sleep()函式的用法:

執行程序掛起一段時間,也就是程序等待一段時間在繼續執行。

linux中:unsigned int sleep(unsigned int seconds)

windows中:void Sleep(DWORD dwMilliseconds)

需要的標頭檔案:Windows下為:#include <windows.h>    Linux 下為:#include <unistd.h>

注意:windows中為Sleep()函式(S大寫),linux中為sleep()函式(S小寫)。

Sleep()/sleep()函式括號裡的時間,在windows下是以毫秒為單位,而Linux是以秒為單位。

如果想在Linux下也用微秒為單位掛起,可以使用執行緒休眠函式:void usleep(unsigned long usec)。

使用的時候需要宣告標頭檔案:#include <system.h>