C++ 生成隨機數 srand()和rand()

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))

相關文章
相關標籤/搜索