c語(yǔ)言產(chǎn)生隨機(jī)數(shù)的函數(shù) c語(yǔ)言中產(chǎn)生隨機(jī)數(shù)的函數(shù)

C語(yǔ)言中產(chǎn)生隨機(jī)數(shù)的函數(shù)是什么?

c語(yǔ)言中產(chǎn)生隨機(jī)數(shù)的相關(guān)函數(shù)主要包括srand和rand函數(shù),兩者配合生成隨機(jī)數(shù)據(jù),測(cè)試代碼如下,

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比保山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式保山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋保山地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

#includestdio.h

#include stdlib.h

#include time.h

void main()

{

int i=0,j=0;

int p[5][5]={0};

srand(time(NULL));

for(i=0;i5;i++)

for(j=0;j5;j++)

p[i][j]=rand()%100+1;//產(chǎn)生1-100的隨機(jī)數(shù)存入數(shù)組p中

printf("二維數(shù)組p為:\n");

for(i=0;i5;i++)

{

for(j=0;j5;j++)

printf("%d\t",p[i][j]);

printf("\n");

}

}

一般srand和rand配合使用產(chǎn)生偽隨機(jī)數(shù)序列。rand函數(shù)在產(chǎn)生隨機(jī)數(shù)前,需要系統(tǒng)提供的生成偽隨機(jī)數(shù)序列的種子,rand根據(jù)這個(gè)種子的值產(chǎn)生一系列隨機(jī)數(shù)。如果系統(tǒng)提供的種子沒(méi)有變化,每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列都是一樣的。srand(unsigned seed)通過(guò)參數(shù)seed改變系統(tǒng)提供的種子值,從而可以使得每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列不同,從而實(shí)現(xiàn)真正意義上的“隨機(jī)”。通??梢岳孟到y(tǒng)時(shí)間來(lái)改變系統(tǒng)的種子值,即srand(time(NULL)),可以為rand函數(shù)提供不同的種子值,進(jìn)而產(chǎn)生不同的隨機(jī)數(shù)序列。

c語(yǔ)言隨機(jī)數(shù)怎么生成

在實(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的問(wèn)題在于,在下次程序調(diào)用時(shí),生成的隨機(jī)數(shù)與上次一致。所以,rand函數(shù)雖然生成隨機(jī)數(shù),但可以說(shuō)是一個(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ī)來(lái)說(shuō)太漫長(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ù)。

c語(yǔ)言隨機(jī)數(shù)函數(shù)是什么?

C語(yǔ)言隨機(jī)函數(shù)主要用于實(shí)現(xiàn)一組隨機(jī)數(shù)的生成。

代碼示例如下:

#includestdio.h

#includestdlib.h

int main ()

{

int a;

a=rand()%4;

printf("%d\n",a);

return 0;

}

C預(yù)先生成一組隨機(jī)數(shù),每次調(diào)用隨機(jī)函數(shù)時(shí)從指針?biāo)赶虻奈恢瞄_始取值,因此使用rand()重復(fù)運(yùn)行程序產(chǎn)生的隨機(jī)數(shù)都是相同的,可以通過(guò)srand()函數(shù)來(lái)改變指針位置。

擴(kuò)展資料:

C語(yǔ)言隨機(jī)函數(shù)指針位置

void srand( unsigned int seed )

改變隨機(jī)數(shù)表的指針位置(用seed變量控制)。一般配合time(NULL)使用,因?yàn)闀r(shí)間每時(shí)每刻都在改變,產(chǎn)生的seed值都不同。

基于毫秒級(jí)隨機(jī)數(shù)產(chǎn)生方法:

#includewindows.h

種子設(shè)為:srand(unsigned int seed);

srand(GetTickCount());

參考資料:百度百科-C語(yǔ)言隨機(jī)函數(shù)

本文題目:c語(yǔ)言產(chǎn)生隨機(jī)數(shù)的函數(shù) c語(yǔ)言中產(chǎn)生隨機(jī)數(shù)的函數(shù)
文章URL:http://muchs.cn/article40/dophjho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、Google、自適應(yīng)網(wǎng)站

廣告

聲明:本網(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)

網(wǎng)站托管運(yùn)營(yíng)