rand()/srand()

一、rand()

rand()函數(shù)用來產(chǎn)生隨機(jī)數(shù),但是,rand()的內(nèi)部實現(xiàn)是用線性同余法實現(xiàn)的,是偽隨機(jī)數(shù),由于周期較長,因此在一定范圍內(nèi)可以看成是隨機(jī)的。

rand()會返回一個范圍在0到RAND_MAX(32767)之間的偽隨機(jī)數(shù)(整數(shù))。

在調(diào)用rand()函數(shù)之前,可以使用srand()函數(shù)設(shè)置隨機(jī)數(shù)種子,如果沒有設(shè)置隨機(jī)數(shù)種子,rand()函數(shù)在調(diào)用時,自動設(shè)計隨機(jī)數(shù)種子為1。隨機(jī)種子相同,每次產(chǎn)生的隨機(jī)數(shù)也會相同。

rand()函數(shù)需要的頭文件是:

rand()函數(shù)原型:int rand(void);

使用rand()函數(shù)產(chǎn)生1-100以內(nèi)的隨機(jī)整數(shù):int number1 = rand() % 100;

二、srand()

srand()函數(shù)需要的頭文件仍然是:

srand()函數(shù)原型:void srand (usigned int seed);

srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時的隨機(jī)數(shù)種子。參數(shù)seed是整數(shù),通??梢岳胻ime(0)或geypid(0)的返回值作為seed。

使用rand()和srand()產(chǎn)生1-100以內(nèi)的隨機(jī)整數(shù):srand(time(0));

int number1 = rand() % 100;

三、使用rand()和srand()產(chǎn)生指定范圍內(nèi)的隨機(jī)整數(shù)的方法

“模除+加法”的方法

因為,對于任意數(shù),0<=rand()%(n-m+1)<=n-m

因此,0+m<=rand()%(n-m+1)+m<=n-m+m

因此,如要產(chǎn)生[m,n]范圍內(nèi)的隨機(jī)數(shù)num,可用:

int num=rand()%(n-m+1)+m;

其中的rand()%(n-m+1)+m算是一個公式,記錄一下方便以后查閱。

比如產(chǎn)生10~30的隨機(jī)整數(shù):

srand(time(0));

int a = rand() % (21)+10;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容