rand函數(shù)功能為獲取一個偽隨機數(shù)(偽隨機數(shù)的概念下面會有介紹)。一、函數(shù)名: rand();二、聲明:intrand();三、所在頭文件:stdlib.h四、功能:返回一個偽隨機數(shù)。之所以說是偽隨機數(shù),是因為在沒有其它操作下,每次執(zhí)行同一個程序,調用rand得到的隨機數(shù)序列是固定的(不是真正的“隨機”)。五、為了使rand的結果更“真”一些,也就是令其返回值更具有隨機性(不確定性),C語言在stdlib.h中還提供了srand函數(shù),通過該函數(shù)可以設置一個隨機數(shù)種子,一般用當前時間的毫秒數(shù)來做參數(shù)。通過time(NULL)可以獲取到當前時間的毫秒值(該函數(shù)位于time.h)中。六、使用rand的流程可以總結為:1調用srand(time(NULL))設置隨機數(shù)種子。2調用rand函數(shù)獲取一個或一系列隨機數(shù)。需要注意的是,srand只需要在所有rand調用前,被調用一次即可,沒必要調用多次。七、以下是隨機獲取10個整型值并輸出的例子,輔助理解。#include #include #include int main(){ int i; srand(time(NULL));//設置隨機數(shù)種子。 for(i = 0; i 10; i ++)//運行10次。 printf("%d
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、虛擬主機、營銷軟件、網站建設、牡丹網站維護、網站推廣。
", rand());//每次獲取一個隨機數(shù)并輸出。 return 0;}
它的返回值就是求取隨機的值,所以如果沒有對數(shù)有要求,直接這樣定:
printf("%d", rand());就能輸出一個隨機數(shù).但如果對數(shù)有要求,如小數(shù)或在一定值以內:
小數(shù):rand()+rand()/100.0 //100.0后面的.0必須寫,100是說明求兩位小數(shù),你可以自己加大.
一定范圍:rand()%10+0 //10是頂和底的差,0是底,就是說求10到20之間的數(shù)就是:rand()%10+10
但是調用它必須先調用srand()來生成隨機種子,如果你沒調用它,系統(tǒng)會自動調用.但是srand是有個參數(shù)的,種子就是根據(jù)這個參數(shù)來定的,所以這個參數(shù)決定著生成的隨機數(shù).如果你在代碼里寫死了它:srand(10);那這樣rand生成的隨機數(shù)就也被定格在了一定量,所以不要這樣用.要這樣寫:
srand(time(NULL));time的返回值是當前系統(tǒng)時間.因為時間不同,所取的數(shù)值也就不同.這樣隨機數(shù)就真正的隨機了.
time在中聲明
rand,srand在中聲明.
%90就是產生的隨機數(shù)對90取余,那么結果肯定是在0到89之間, 結果再加上10,不就是10到99之間了
rand()是C語言中產生隨機數(shù)的一個函數(shù),但是需要注意的是,產生的是偽隨機數(shù)。
rand()用法舉例:
產生1到100之間的隨機數(shù)
#includestdio.h
int
main(){
srand((unsigned)time(NULL));//產生隨機數(shù)種子
int
rand_num=(rand()%100)+1;//產生1到100直接的隨機數(shù)
printf("rand_num=%d\n",rand_num);
return
0;
}
代碼截圖:
擴展資料:
所謂的“偽隨機數(shù)”指的并不是假的隨機數(shù)。其實絕對的隨機數(shù)只是一種理想狀態(tài)的隨機數(shù),計算機只能生成相對的隨機數(shù)即偽隨機數(shù)。
系統(tǒng)在調用rand()之前都會自動調用srand(),如果用戶在rand()之前曾調用過srand()給參數(shù)seed指定了一個值,那么
rand()就會將seed的值作為產生偽隨機數(shù)的初始值;
而如果用戶在rand()前沒有調用過srand(),那么系統(tǒng)默認將1作為偽隨機數(shù)的初始
值。如果給了一個定值,那么每次rand()產生的隨機數(shù)序列都是一樣的。
所以為了避免上述情況的發(fā)生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來
產生種子。
如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某個合適的整數(shù)。
例如,srand((unsigned)time(NULL)*10)。
參考資料:百度百科-rand函數(shù)
一、首先包含必要的頭文件
#includestdio.h
這個包含用于輸入輸出的函數(shù)。
#includestdlib.h
這個包含初始化隨機數(shù)種子、產生隨機數(shù)的函數(shù)。
#includetime.h
這個包含與時間有關的函數(shù),初始化隨機數(shù)種子時可以用到。
二、使用如下公式產生在區(qū)間[min,max]之間的隨機數(shù)
int r=rand()%(max-min+1)+min;
三、一個例子,產生10個[1,100]的隨機整數(shù)
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
const int min=1,max=100;
int i,r;
//用當前時間初始化隨機數(shù)種子
srand(time(NULL));
printf("隨機產生的10個1-100的整數(shù)是:");
for(i=0;i10;i++)
{
r=rand()%(max-min+1)+min;
printf("%d,",r);
}
return 0;
}
四、運行結果的截圖
截圖1
截圖2
rand()
rand()函數(shù)用來產生隨機數(shù),但是,rand()的內部實現(xiàn)是用線性同余法實現(xiàn)的,是偽隨機數(shù),由于周期較長,因此在一定范圍內可以看成是隨機的。
rand()會返回一個范圍在0到RAND_MAX(至少是32767)之間的偽隨機數(shù)(整數(shù))。
在調用rand()函數(shù)之前,可以使用srand()函數(shù)設置隨機數(shù)種子,如果沒有設置隨機數(shù)種子,rand()函數(shù)在調用時,自動設計隨機數(shù)種子為1。隨機種子相同,每次產生的隨機數(shù)也會相同。
rand()函數(shù)需要的頭文件是:stdlib.h
rand()函數(shù)原型:int rand(void);
使用rand()函數(shù)產生1-100以內的隨機整數(shù):int number1 = rand() % 100+1。
srand()
srand()函數(shù)需要的頭文件仍然是:stdlib.h
srand()函數(shù)原型:void srand (usigned int seed);
srand()用來設置rand()產生隨機數(shù)時的隨機數(shù)種子。參數(shù)seed是整數(shù),通??梢岳胻ime(0)或getpid(0)的返回值作為seed。
使用rand()和srand()產生1-100以內的隨機整數(shù):
srand(time(0));
int number1 = rand() % 100+1。