1. 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 每個數字被選中的機率是相同的。
a、rand()不需要參數,它會返回一個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的一個大整數。
b、如果你要產生0~99這100個整數中的一個隨機整數,可以表達為:int num = rand() % 100;
這樣,num的值就是一個0~99中的一個隨機數了。
c、如果要產生1~100,則是這樣:int num = rand() % 100 + 1;
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))