它的返回值就是求取隨機(jī)的值,所以如果沒有對(duì)數(shù)有要求,直接這樣定:
創(chuàng)新互聯(lián)建站是專業(yè)的嵐山網(wǎng)站建設(shè)公司,嵐山接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行嵐山網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
printf("%d", rand());就能輸出一個(gè)隨機(jī)數(shù).但如果對(duì)數(shù)有要求,如小數(shù)或在一定值以內(nèi):
小數(shù):rand()+rand()/100.0 //100.0后面的.0必須寫,100是說(shuō)明求兩位小數(shù),你可以自己加大.
一定范圍:rand()%10+0 //10是頂和底的差,0是底,就是說(shuō)求10到20之間的數(shù)就是:rand()%10+10
但是調(diào)用它必須先調(diào)用srand()來(lái)生成隨機(jī)種子,如果你沒調(diào)用它,系統(tǒng)會(huì)自動(dòng)調(diào)用.但是srand是有個(gè)參數(shù)的,種子就是根據(jù)這個(gè)參數(shù)來(lái)定的,所以這個(gè)參數(shù)決定著生成的隨機(jī)數(shù).如果你在代碼里寫死了它:srand(10);那這樣rand生成的隨機(jī)數(shù)就也被定格在了一定量,所以不要這樣用.要這樣寫:
srand(time(NULL));time的返回值是當(dāng)前系統(tǒng)時(shí)間.因?yàn)闀r(shí)間不同,所取的數(shù)值也就不同.這樣隨機(jī)數(shù)就真正的隨機(jī)了.
time在time.h中聲明
rand,srand在stdilb.h中聲明.
rand函數(shù)功能為獲取一個(gè)偽隨機(jī)數(shù)(偽隨機(jī)數(shù)的概念下面會(huì)有介紹)。
一、函數(shù)名:
rand();
二、聲明:
int rand();
三、所在頭文件:
stdlib.h
四、功能:
返回一個(gè)偽隨機(jī)數(shù)。之所以說(shuō)是偽隨機(jī)數(shù),是因?yàn)樵跊]有其它操作下,每次執(zhí)行同一個(gè)程序,調(diào)用rand得到的隨機(jī)數(shù)序列是固定的(不是真正的“隨機(jī)”)。
五、為了使rand的結(jié)果更“真”一些,也就是令其返回值更具有隨機(jī)性(不確定性),C語(yǔ)言在stdlib.h中還提供了srand函數(shù),通過(guò)該函數(shù)可以設(shè)置一個(gè)隨機(jī)數(shù)種子,一般用當(dāng)前時(shí)間的毫秒數(shù)來(lái)做參數(shù)。通過(guò)time(NULL)可以獲取到當(dāng)前時(shí)間的毫秒值(該函數(shù)位于time.h)中。
六、使用rand的流程可以總結(jié)為:
1 調(diào)用srand(time(NULL))設(shè)置隨機(jī)數(shù)種子。
2 調(diào)用rand函數(shù)獲取一個(gè)或一系列隨機(jī)數(shù)。
需要注意的是,srand只需要在所有rand調(diào)用前,被調(diào)用一次即可,沒必要調(diào)用多次。
七、以下是隨機(jī)獲取10個(gè)整型值并輸出的例子,輔助理解。
#include?stdio.h
#include?stdlib.h
#include?time.h
int?main()
{
int?i;
srand(time(NULL));//設(shè)置隨機(jī)數(shù)種子。
for(i?=?0;?i??10;?i?++)//運(yùn)行10次。
printf("%d\n",?rand());//每次獲取一個(gè)隨機(jī)數(shù)并輸出。
return?0;
}
rand()
rand()函數(shù)用來(lái)產(chǎn)生隨機(jī)數(shù),但是,rand()的內(nèi)部實(shí)現(xiàn)是用線性同余法實(shí)現(xiàn)的,是偽隨機(jī)數(shù),由于周期較長(zhǎng),因此在一定范圍內(nèi)可以看成是隨機(jī)的。
rand()會(huì)返回一個(gè)范圍在0到RAND_MAX(至少是32767)之間的偽隨機(jī)數(shù)(整數(shù))。
在調(diào)用rand()函數(shù)之前,可以使用srand()函數(shù)設(shè)置隨機(jī)數(shù)種子,如果沒有設(shè)置隨機(jī)數(shù)種子,rand()函數(shù)在調(diào)用時(shí),自動(dòng)設(shè)計(jì)隨機(jī)數(shù)種子為1。隨機(jī)種子相同,每次產(chǎn)生的隨機(jī)數(shù)也會(huì)相同。
rand()函數(shù)需要的頭文件是:stdlib.h
rand()函數(shù)原型:int rand(void);
使用rand()函數(shù)產(chǎn)生1-100以內(nèi)的隨機(jī)整數(shù):int number1 = rand() % 100+1。
srand()
srand()函數(shù)需要的頭文件仍然是:stdlib.h
srand()函數(shù)原型:void srand (usigned int seed);
srand()用來(lái)設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù)seed是整數(shù),通常可以利用time(0)或getpid(0)的返回值作為seed。
使用rand()和srand()產(chǎn)生1-100以內(nèi)的隨機(jī)整數(shù):
srand(time(0));
int number1 = rand() % 100+1。
一、首先包含必要的頭文件
#includestdio.h
這個(gè)包含用于輸入輸出的函數(shù)。
#includestdlib.h
這個(gè)包含初始化隨機(jī)數(shù)種子、產(chǎn)生隨機(jī)數(shù)的函數(shù)。
#includetime.h
這個(gè)包含與時(shí)間有關(guān)的函數(shù),初始化隨機(jī)數(shù)種子時(shí)可以用到。
二、使用如下公式產(chǎn)生在區(qū)間[min,max]之間的隨機(jī)數(shù)
int r=rand()%(max-min+1)+min;
三、一個(gè)例子,產(chǎn)生10個(gè)[1,100]的隨機(jī)整數(shù)
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
const int min=1,max=100;
int i,r;
//用當(dāng)前時(shí)間初始化隨機(jī)數(shù)種子
srand(time(NULL));
printf("隨機(jī)產(chǎn)生的10個(gè)1-100的整數(shù)是:");
for(i=0;i10;i++)
{
r=rand()%(max-min+1)+min;
printf("%d,",r);
}
return 0;
}
四、運(yùn)行結(jié)果的截圖
截圖1
截圖2
#include stdlib.h
#include time.h
int main( )
{
int a[100]; /* 存放隨機(jī)數(shù)的數(shù)組 */
time_t t1; /* 用于存放時(shí)間 */
time(t1); /* 取得當(dāng)前系統(tǒng)時(shí)間 */
srand(t1); /* 設(shè)置隨機(jī)數(shù)種子 */
for (i = 0; i 100; i ++) /* 循環(huán)生成10個(gè)隨機(jī)數(shù),放到數(shù)組a中 */
a[i] = 10 + rand( ) % 90;
/* 數(shù)值范圍在10到99間,需要不同范圍的數(shù)據(jù)請(qǐng)自行更改 */
...
}
當(dāng)前名稱:c語(yǔ)言中的隨機(jī)函數(shù)怎么用 c語(yǔ)言中隨機(jī)函數(shù)的用法
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article20/hihhco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)