突然遇到了隨機(jī)函數(shù)的問題,那出來(lái)和大家分享一下 :
srand():用此函數(shù)來(lái)獲取隨機(jī)數(shù)的種子,rand()來(lái)獲取隨機(jī)數(shù);
rand和srand的用法
首先我們要對(duì)rand&srand有個(gè)總體的看法:srand初始化隨機(jī)種子,rand產(chǎn)生隨機(jī)數(shù),下面將詳細(xì)說明。
rand(產(chǎn)生隨機(jī)數(shù))
表頭文件 : #include
定義函數(shù) : int rand(void)
函數(shù)說明 :
因?yàn)閞and的內(nèi)部實(shí)現(xiàn)是用線性同余法做的,他不是真的隨機(jī)數(shù),只不過是因?yàn)槠渲芷谔貏e長(zhǎng),所以有一定的范圍里可看成是隨機(jī)的,rand()會(huì)返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX間。
在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會(huì)自動(dòng)設(shè)隨機(jī)數(shù)種子為1.
rand ()產(chǎn)生的是假隨機(jī)數(shù)字,每次執(zhí)行時(shí)是相同的。
若要不同,以不同的值來(lái)初始化它.初始化的函數(shù)就是srand()。
返回值:
返回0至RAND_MAX之間的隨機(jī)整數(shù)值,RAND_MAX的范圍最少是在32767之間(int),即雙字節(jié)(16位數(shù))。若用unsigned int 雙字節(jié)是65535,四字節(jié)是4294967295的整數(shù)范圍。
0~RAND_MAX每個(gè)數(shù)字被選中的機(jī)率是相同的。
srand函數(shù)是隨機(jī)數(shù)發(fā)生器的初始化函數(shù),原型:
void srand(unsigned seed);
建議用下面的方法初始化(獲得隨機(jī)數(shù)種子)
srand( (unsigned)time( NULL ) );
下面是我寫的一個(gè)程序,希望多多指教:
#include
#include
#include