rand函數(shù)功能為獲取一個偽隨機數(shù)(偽隨機數(shù)的概念下面會有介紹)。
創(chuàng)新互聯(lián)服務(wù)項目包括天祝藏族自治網(wǎng)站建設(shè)、天祝藏族自治網(wǎng)站制作、天祝藏族自治網(wǎng)頁制作以及天祝藏族自治網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,天祝藏族自治網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到天祝藏族自治省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
一、函數(shù)名:
rand();
二、聲明:
int rand();
三、所在頭文件:
stdlib.h
四、功能:
返回一個偽隨機數(shù)。之所以說是偽隨機數(shù),是因為在沒有其它操作下,每次執(zhí)行同一個程序,調(diào)用rand得到的隨機數(shù)序列是固定的(不是真正的“隨機”)。
五、為了使rand的結(jié)果更“真”一些,也就是令其返回值更具有隨機性(不確定性),C語言在stdlib.h中還提供了srand函數(shù),通過該函數(shù)可以設(shè)置一個隨機數(shù)種子,一般用當前時間的毫秒數(shù)來做參數(shù)。通過time(NULL)可以獲取到當前時間的毫秒值(該函數(shù)位于time.h)中。
六、使用rand的流程可以總結(jié)為:
1 調(diào)用srand(time(NULL))設(shè)置隨機數(shù)種子。
2 調(diào)用rand函數(shù)獲取一個或一系列隨機數(shù)。
需要注意的是,srand只需要在所有rand調(diào)用前,被調(diào)用一次即可,沒必要調(diào)用多次。
七、以下是隨機獲取10個整型值并輸出的例子,輔助理解。
#include?stdio.h
#include?stdlib.h
#include?time.h
int?main()
{
int?i;
srand(time(NULL));//設(shè)置隨機數(shù)種子。
for(i?=?0;?i??10;?i?++)//運行10次。
printf("%d\n",?rand());//每次獲取一個隨機數(shù)并輸出。
return?0;
}
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。
c語言中的rand隨機數(shù)函數(shù),是按指定順序來產(chǎn)生的,在生成隨機數(shù)之前,在stdlib.h頭文件中,會初始化函數(shù)srand,根據(jù)隨機種子seed,來獲取隨機數(shù),如果seed不變,每次運行得到的隨機數(shù)會是一樣的,因此,rand函數(shù)也被大家叫做偽隨機數(shù)。下面就來介紹下rand函數(shù)的使用
01
打開代碼編譯器,輸入如下所示的代碼片段
02
運行該代碼片段,得到10個隨機數(shù),但是我們發(fā)現(xiàn),不論運行幾次,生成的隨機數(shù)都是這10個,也就是說,在種子seed不變的情況下,生成的隨機數(shù)是偽隨機數(shù)
03
我們引入頭文件time.h,取時間戳作為seed的取值來源,改代碼片段如下,將srand(1)改成srand(time(NULL))
04
運行代碼,得到10個隨機數(shù)如下,定義非常量的srand參數(shù),可以避免偽隨機數(shù)的產(chǎn)生
rand()是表示產(chǎn)生隨機數(shù)的一種函數(shù),多應(yīng)用于循環(huán)語句當中進行判斷。
比如說n=rand();
switch(n)
{case1.......
case2......}
這些都是都可能被執(zhí)行的,因為數(shù)字是隨機的。
擴展資料:
注意
rand()函數(shù)可以用來產(chǎn)生隨機數(shù),但是這不是真真意義上的隨機數(shù),是一個偽隨機數(shù),是根據(jù)一個數(shù),我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數(shù),
當這系列數(shù)很大的時候,就符合正態(tài)公布,從而相當于產(chǎn)生了隨機數(shù),但這不是真正的隨機數(shù),當計算機正常開機后,這個種子的值是定了的,除非你破壞了系統(tǒng),為了改變這個種子的值,C提供了 srand()函數(shù),它的原形是void srand( int a) ,
功能是初始化隨機產(chǎn)生器既rand()函數(shù)的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數(shù),可以產(chǎn)生可以預(yù)見的隨機序列。
參考資料來源:rand函數(shù)-百度百科
新聞標題:rand隨機函數(shù)c語言,c++隨機函數(shù)rand
當前地址:http://www.ekvhdxd.cn/article36/dsejpsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計公司、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)