C語(yǔ)言生成隨機(jī)數(shù)的函數(shù)為rand(), 可以獲得一個(gè)非負(fù)整數(shù)的隨機(jī)數(shù)。要調(diào)用rand需要包含頭文件stdlib.h。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供西青網(wǎng)站建設(shè)、西青做網(wǎng)站、西青網(wǎng)站設(shè)計(jì)、西青網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、西青企業(yè)網(wǎng)站模板建站服務(wù),十多年西青做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
要讓隨機(jī)數(shù)限定在一個(gè)范圍,可以采用如下方法。
假設(shè)要產(chǎn)生隨機(jī)數(shù)r, 其范圍為 m=r=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理為,對(duì)于任意數(shù),
0=rand()%(n-m+1)=n-m
于是
0+m=rand()%(n-m+1)+m=n-m+m
即
m=rand()%(n-m+1)+m=n
在實(shí)際編程中,我們經(jīng)常需要生成隨機(jī)數(shù)。在c語(yǔ)言中我們通常使用rand方法生成隨機(jī)數(shù),在調(diào)用rand前需要調(diào)用srand初始化隨機(jī)數(shù)種子。
電腦:華為MateBook14
系統(tǒng):Windows10
軟件:notepad++等編輯器、gcc編譯器1.0
1、使用rand函數(shù)生成隨機(jī)數(shù),rand隨機(jī)生成一個(gè)位于0 ~ RAND_MAX之間的整數(shù)。如下圖中,我們直接使用rand方法生成10個(gè)隨機(jī)數(shù)。
2、程序運(yùn)行后生成了隨機(jī)數(shù),但直接使用rand的問題在于,在下次程序調(diào)用時(shí),生成的隨機(jī)數(shù)與上次一致。所以,rand函數(shù)雖然生成隨機(jī)數(shù),但可以說是一個(gè)偽隨機(jī)。因?yàn)槊看握{(diào)用時(shí),生成數(shù)字順序都是固定的。
3、為了在每次調(diào)用時(shí)生成不同的隨機(jī)數(shù),使用srand函數(shù)初始化隨機(jī)數(shù)種子。只要隨機(jī)數(shù)種子變化了,那么生成的隨機(jī)數(shù)就會(huì)改變。通常,srand使用當(dāng)前時(shí)間作為種子。
4、但使用時(shí)間作為隨機(jī)數(shù)種子是否安全呢?我們目前程序執(zhí)行的速度都太快了,一秒鐘對(duì)于計(jì)算機(jī)來說太漫長(zhǎng)了。我們將生成隨機(jī)數(shù)的操作定義為函數(shù),然后調(diào)用函數(shù)兩次,看生成的隨機(jī)數(shù)仍然時(shí)一樣。
5、優(yōu)化函數(shù)也比較簡(jiǎn)單,在使用時(shí)間的基礎(chǔ)上,我們還加上一個(gè)定增序號(hào)。這樣能保證就算同一秒鐘內(nèi)多次調(diào)用,隨機(jī)數(shù)的種子都是不一樣的。
6、通常,我們需要獲取一定范圍內(nèi)的隨機(jī)數(shù)。所以,在生成隨機(jī)數(shù)之后我們使用模運(yùn)算獲取對(duì)應(yīng)范圍內(nèi)的數(shù)據(jù)。如生成0到100內(nèi)的隨機(jī)數(shù)。
假設(shè)要生成的隨機(jī)數(shù)是大于等于20且小于等于100的整數(shù)
#includestdio.h
#includetime.h
#includestdlib.h
void?main()?{?int?a,b,x;
a=20;?b=100;
srand((unsigned?int)time(NULL));?//用當(dāng)前時(shí)間生成一個(gè)隨機(jī)數(shù)種子
x=rand()%(b-a+1)+a;
printf("得到一個(gè)隨機(jī)數(shù):%d\n",x);
}
你好,我是大魚兒不吐泡泡,用百度網(wǎng)盤分享給你,點(diǎn)開就可以保存,鏈接永久有效^_^鏈接:?
提取碼:?jbuj?復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦
--來自百度網(wǎng)盤超級(jí)會(huì)員v3的分享
如果有另外想要的資源或者鏈接失效,可以使用百度網(wǎng)盤推出的【收集文件】功能進(jìn)行提問收集資源哦,無(wú)需轉(zhuǎn)存簡(jiǎn)單快捷,功能鏈接:?微信小程序、百度網(wǎng)盤app、web端都已上線