1. 程式人生 > >rand()和srand()函式

rand()和srand()函式

srand 初始化隨機種子,rand 產生隨機數。

rand函式

標頭檔案: <stdlib.h>

定義函式:int rand(void)

函式功能:產生隨機數

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

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

rand()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函式就是srand()。

函式舉例:

/* 產生介於1 到10 間的隨機數值*/

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

int main(void)
{
int i,j;


for(i=0; i<10; i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d ",j);
}
printf("\n");

return 0;
}

第一次執行結果:  (每次執行結果都相同)

   

第二次執行結果:

 

srand函式

標頭檔案:<stdlib.h>

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

函式說明:srand()用來設定rand()產生隨機數時的隨機數種子。引數seed必須是個整數,通常可以利用getpid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

函式舉例:

/* 產生介於1 到10 間的隨機數值*/

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

int main(void)
{
int i,j;

srand((int)time(NULL));
for(i=0; i<10; i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d ",j);
}
printf("\n");

return 0;
}

第一次執行結果:(每次執行結果都不同)


第二次執行結果: