它的返回值就是求取隨機的值,所以如果沒有對數(shù)有要求,直接這樣定:
創(chuàng)新互聯(lián)公司專注于洪江管理區(qū)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供洪江管理區(qū)營銷型網(wǎng)站建設(shè),洪江管理區(qū)網(wǎng)站制作、洪江管理區(qū)網(wǎng)頁設(shè)計、洪江管理區(qū)網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造洪江管理區(qū)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供洪江管理區(qū)網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
printf("%d", rand());就能輸出一個隨機數(shù).但如果對數(shù)有要求,如小數(shù)或在一定值以內(nèi):
小數(shù):rand()+rand()/100.0 //100.0后面的.0必須寫,100是說明求兩位小數(shù),你可以自己加大.
一定范圍:rand()%10+0 //10是頂和底的差,0是底,就是說求10到20之間的數(shù)就是:rand()%10+10
但是調(diào)用它必須先調(diào)用srand()來生成隨機種子,如果你沒調(diào)用它,系統(tǒng)會自動調(diào)用.但是srand是有個參數(shù)的,種子就是根據(jù)這個參數(shù)來定的,所以這個參數(shù)決定著生成的隨機數(shù).如果你在代碼里寫死了它:srand(10);那這樣rand生成的隨機數(shù)就也被定格在了一定量,所以不要這樣用.要這樣寫:
srand(time(NULL));time的返回值是當(dāng)前系統(tǒng)時間.因為時間不同,所取的數(shù)值也就不同.這樣隨機數(shù)就真正的隨機了.
time在中聲明
rand,srand在中聲明.
rand()
rand()函數(shù)用來產(chǎn)生隨機數(shù),但是,rand()的內(nèi)部實現(xiàn)是用線性同余法實現(xiàn)的,是偽隨機數(shù),由于周期較長,因此在一定范圍內(nèi)可以看成是隨機的。
rand()會返回一個范圍在0到RAND_MAX(至少是32767)之間的偽隨機數(shù)(整數(shù))。
在調(diào)用rand()函數(shù)之前,可以使用srand()函數(shù)設(shè)置隨機數(shù)種子,如果沒有設(shè)置隨機數(shù)種子,rand()函數(shù)在調(diào)用時,自動設(shè)計隨機數(shù)種子為1。隨機種子相同,每次產(chǎn)生的隨機數(shù)也會相同。
rand()函數(shù)需要的頭文件是:stdlib.h
rand()函數(shù)原型:int rand(void);
使用rand()函數(shù)產(chǎn)生1-100以內(nèi)的隨機整數(shù):int number1 = rand() % 100+1。
srand()
srand()函數(shù)需要的頭文件仍然是:stdlib.h
srand()函數(shù)原型:void srand (usigned int seed);
srand()用來設(shè)置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。參數(shù)seed是整數(shù),通??梢岳胻ime(0)或getpid(0)的返回值作為seed。
使用rand()和srand()產(chǎn)生1-100以內(nèi)的隨機整數(shù):
srand(time(0));
int number1 = rand() % 100+1。
rand()%90+10:隨機產(chǎn)生一個兩位數(shù)[10,100).
rand()是產(chǎn)生隨機數(shù)的函數(shù)(rand為random的縮寫),它產(chǎn)生一個[0,32767)之間一個隨機數(shù).
rand()常與srand()一起使用.
srand()是seed_random的縮寫,seed意思是隨機數(shù)種子.如果程序中未使用srand()函數(shù).C系統(tǒng)默認為srand(0).如果有以下語句:
for(i=0;i5;i++)
for(j=0;j4;j++)
a[i][j]=rand()%90+10;
則從a[0][0]到a[5][4]的值都相同.
因此要在for(i=0;i5;i++)之前加上如下語句:
srand ( (unsigned) time (NULL) );
srand()的形參要求是unsigned型,而time()的返回值是長整型,故需強制轉(zhuǎn)換.而time(NULL)返回從1970年0時0分0秒到srand()語句執(zhí)行時系統(tǒng)時鐘所經(jīng)歷的秒數(shù)(這個數(shù)字很大達千萬,故為長整型).
如果你需要20個60到100的隨機數(shù).則可用如下語句實現(xiàn):
#inlude stdio.h
main()
{int a[20},i;
srand ( (unsigned) time (NULL) );
for(i=0;i20;i++)
{a[i]=rand()%40+60;/*100-60=40*/
printf("%4d",a[i]);
}
}
其實從概律論來分析,用這兩個函數(shù)產(chǎn)生的隨機數(shù)并不隨機,它們并不符合正態(tài)分數(shù).
一、首先包含必要的頭文件
#includestdio.h
這個包含用于輸入輸出的函數(shù)。
#includestdlib.h
這個包含初始化隨機數(shù)種子、產(chǎn)生隨機數(shù)的函數(shù)。
#includetime.h
這個包含與時間有關(guān)的函數(shù),初始化隨機數(shù)種子時可以用到。
二、使用如下公式產(chǎn)生在區(qū)間[min,max]之間的隨機數(shù)
int r=rand()%(max-min+1)+min;
三、一個例子,產(chǎn)生10個[1,100]的隨機整數(shù)
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
const int min=1,max=100;
int i,r;
//用當(dāng)前時間初始化隨機數(shù)種子
srand(time(NULL));
printf("隨機產(chǎn)生的10個1-100的整數(shù)是:");
for(i=0;i10;i++)
{
r=rand()%(max-min+1)+min;
printf("%d,",r);
}
return 0;
}
四、運行結(jié)果的截圖
截圖1
截圖2
rand()是C語言中產(chǎn)生隨機數(shù)的一個函數(shù),但是需要注意的是,產(chǎn)生的是偽隨機數(shù)。
rand()用法舉例:
產(chǎn)生1到100之間的隨機數(shù)
#includestdio.h
int
main(){
srand((unsigned)time(NULL));//產(chǎn)生隨機數(shù)種子
int
rand_num=(rand()%100)+1;//產(chǎn)生1到100直接的隨機數(shù)
printf("rand_num=%d\n",rand_num);
return
0;
}
代碼截圖:
擴展資料:
所謂的“偽隨機數(shù)”指的并不是假的隨機數(shù)。其實絕對的隨機數(shù)只是一種理想狀態(tài)的隨機數(shù),計算機只能生成相對的隨機數(shù)即偽隨機數(shù)。
系統(tǒng)在調(diào)用rand()之前都會自動調(diào)用srand(),如果用戶在rand()之前曾調(diào)用過srand()給參數(shù)seed指定了一個值,那么
rand()就會將seed的值作為產(chǎn)生偽隨機數(shù)的初始值;
而如果用戶在rand()前沒有調(diào)用過srand(),那么系統(tǒng)默認將1作為偽隨機數(shù)的初始
值。如果給了一個定值,那么每次rand()產(chǎn)生的隨機數(shù)序列都是一樣的。
所以為了避免上述情況的發(fā)生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來
產(chǎn)生種子。
如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某個合適的整數(shù)。
例如,srand((unsigned)time(NULL)*10)。
參考資料:百度百科-rand函數(shù)
c語言中的rand隨機數(shù)函數(shù),是按指定順序來產(chǎn)生的,在生成隨機數(shù)之前,在stdlib.h頭文件中,會初始化函數(shù)srand,根據(jù)隨機種子seed,來獲取隨機數(shù),如果seed不變,每次運行得到的隨機數(shù)會是一樣的,因此,rand函數(shù)也被大家叫做偽隨機數(shù)。下面就來介紹下rand函數(shù)的使用
打開代碼編譯器,輸入如下所示的代碼片段
運行該代碼片段,得到10個隨機數(shù),但是我們發(fā)現(xiàn),不論運行幾次,生成的隨機數(shù)都是這10個,也就是說,在種子seed不變的情況下,生成的隨機數(shù)是偽隨機數(shù)
我們引入頭文件time.h,取時間戳作為seed的取值來源,改代碼片段如下,將srand(1)改成srand(time(NULL))
運行代碼,得到10個隨機數(shù)如下,定義非常量的srand參數(shù),可以避免偽隨機數(shù)的產(chǎn)生