1. rand()函數
rand(產生隨機數)
表頭文件: #include<stdlib.h>
定義函數 :int rand(void)調試
函數說明 :
由於rand() 的內部實現是用線性同餘法作的,它不是真的隨機數,只不過是由於其週期特別長,因此有必定的範圍裏可當作是隨機的,
rand() 會返回一隨機數值,範圍在 0 至 RAND_MAX 間。
在調用此函數產生隨機數前,必須先利用 srand()設置好隨機數種子,若是未設隨機數種子,rand()在調用時會自動設隨機數種子爲 1。
rand()產生的是假隨機數字,每次執行時是相同的。若要不一樣,以不一樣的值來初始化它.初始化的函數就是 srand()。class
返回值:
返回 0 至 RAND_MAX 之間的隨機整數值,RAND_MAX 的範圍最少是在 32767 之間(int),即雙字節(16位數)。
若用unsigned int 雙字節是 65535,四字節是 4294967295 的整數範圍。
0~RAND_MAX 每一個數字被選中的機率是相同的。隨機數
a、rand()不須要參數,它會返回一個從0到最大隨機數的任意整數,最大隨機數的大小一般是固定的一個大整數。程序
b、若是你要產生0~99這100個整數中的一個隨機整數,能夠表達爲:int num = rand() % 100; im
這樣,num的值就是一個0~99中的一個隨機數了。總結
c、若是要產生1~100,則是這樣:int num = rand() % 100 + 1; di
d、總結來講,能夠表示爲:int num = rand() % n +a;文件
其中的a是起始值,n-1+a是終止值,n是整數的範圍。時間
e、通常性:rand() % (b-a+1)+ a ; 就表示 a~b 之間的一個隨機整數。
f、若要產生0~1之間的小數,則能夠先取得0~10的整數,而後均除以10便可獲得「隨機到十分位」的10個隨機小數。
若要獲得「隨機到百分位」的隨機小數,則須要先獲得0~100的10個整數,而後均除以100,其它狀況依 此類推。
g、一般rand()產生的隨機數在每次運行的時候都是與上一次相同的,這樣是爲了便於程序的調試。
若要產生每次不一樣的隨機數,則可使用srand( seed )函數進行產生隨機化種子,隨着seed的不一樣,就可以產生不一樣的隨機數。
h、還能夠包含time.h頭文件,而後使用srand(time(0))來使用當前時間使隨機數發生器隨機化,這樣就能夠保證每兩次運行時能夠獲得不一樣的隨機數序列,同時這要求程序的兩次運行的間隔超過1秒。
2. srand()
功能:初始化隨機數發生器,用以生成種子數,每次種子數應爲整數,配合rand()函數使用。
srand(time(0)),基於當前的時間生成種子。(include(ctime))