隨機(jī)函數(shù)的使用c語言 隨機(jī)函數(shù)的使用c語言程序

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

在實際編程中,我們經(jīng)常需要生成隨機(jī)數(shù)。在c語言中我們通常使用rand方法生成隨機(jī)數(shù),在調(diào)用rand前需要調(diào)用srand初始化隨機(jī)數(shù)種子。

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,創(chuàng)新互聯(lián)建站面向各種領(lǐng)域:成都工商代辦成都網(wǎng)站設(shè)計、全網(wǎng)整合營銷推廣解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。


電腦:華為MateBook14

系統(tǒng):Windows10

軟件:notepad++等編輯器、gcc編譯器1.0

1、使用rand函數(shù)生成隨機(jī)數(shù),rand隨機(jī)生成一個位于0 ~ RAND_MAX之間的整數(shù)。如下圖中,我們直接使用rand方法生成10個隨機(jī)數(shù)。

2、程序運行后生成了隨機(jī)數(shù),但直接使用rand的問題在于,在下次程序調(diào)用時,生成的隨機(jī)數(shù)與上次一致。所以,rand函數(shù)雖然生成隨機(jī)數(shù),但可以說是一個偽隨機(jī)。因為每次調(diào)用時,生成數(shù)字順序都是固定的。

3、為了在每次調(diào)用時生成不同的隨機(jī)數(shù),使用srand函數(shù)初始化隨機(jī)數(shù)種子。只要隨機(jī)數(shù)種子變化了,那么生成的隨機(jī)數(shù)就會改變。通常,srand使用當(dāng)前時間作為種子。

4、但使用時間作為隨機(jī)數(shù)種子是否安全呢?我們目前程序執(zhí)行的速度都太快了,一秒鐘對于計算機(jī)來說太漫長了。我們將生成隨機(jī)數(shù)的操作定義為函數(shù),然后調(diào)用函數(shù)兩次,看生成的隨機(jī)數(shù)仍然時一樣。

5、優(yōu)化函數(shù)也比較簡單,在使用時間的基礎(chǔ)上,我們還加上一個定增序號。這樣能保證就算同一秒鐘內(nèi)多次調(diào)用,隨機(jī)數(shù)的種子都是不一樣的。

6、通常,我們需要獲取一定范圍內(nèi)的隨機(jī)數(shù)。所以,在生成隨機(jī)數(shù)之后我們使用模運算獲取對應(yīng)范圍內(nèi)的數(shù)據(jù)。如生成0到100內(nèi)的隨機(jī)數(shù)。

c語言隨機(jī)函數(shù)rand()怎么使用?

它的返回值就是求取隨機(jī)的值,所以如果沒有對數(shù)有要求,直接這樣定:

printf("%d", rand());就能輸出一個隨機(jī)數(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()來生成隨機(jī)種子,如果你沒調(diào)用它,系統(tǒng)會自動調(diào)用.但是srand是有個參數(shù)的,種子就是根據(jù)這個參數(shù)來定的,所以這個參數(shù)決定著生成的隨機(jī)數(shù).如果你在代碼里寫死了它:srand(10);那這樣rand生成的隨機(jī)數(shù)就也被定格在了一定量,所以不要這樣用.要這樣寫:

srand(time(NULL));time的返回值是當(dāng)前系統(tǒng)時間.因為時間不同,所取的數(shù)值也就不同.這樣隨機(jī)數(shù)就真正的隨機(jī)了.

time在time.h中聲明

rand,srand在stdilb.h中聲明.

隨機(jī)函數(shù)rand怎么用c語言

一、首先包含必要的頭文件

#includestdio.h

這個包含用于輸入輸出的函數(shù)。

#includestdlib.h

這個包含初始化隨機(jī)數(shù)種子、產(chǎn)生隨機(jī)數(shù)的函數(shù)。

#includetime.h

這個包含與時間有關(guān)的函數(shù),初始化隨機(jī)數(shù)種子時可以用到。

二、使用如下公式產(chǎn)生在區(qū)間[min,max]之間的隨機(jī)數(shù)

int r=rand()%(max-min+1)+min;

三、一個例子,產(chǎn)生10個[1,100]的隨機(jī)整數(shù)

#include stdio.h

#include stdlib.h

#include time.h

int main()

{

const int min=1,max=100;

int i,r;

//用當(dāng)前時間初始化隨機(jī)數(shù)種子

srand(time(NULL));

printf("隨機(jī)產(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

c語言的隨機(jī)函數(shù)怎樣用?、

#include stdlib.h

#include time.h

int main( )

{

int a[100]; /* 存放隨機(jī)數(shù)的數(shù)組 */

time_t t1; /* 用于存放時間 */

time(t1); /* 取得當(dāng)前系統(tǒng)時間 */

srand(t1); /* 設(shè)置隨機(jī)數(shù)種子 */

for (i = 0; i 100; i ++) /* 循環(huán)生成10個隨機(jī)數(shù),放到數(shù)組a中 */

a[i] = 10 + rand( ) % 90;

/* 數(shù)值范圍在10到99間,需要不同范圍的數(shù)據(jù)請自行更改 */

...

}

標(biāo)題名稱:隨機(jī)函數(shù)的使用c語言 隨機(jī)函數(shù)的使用c語言程序
網(wǎng)頁路徑:http://bm7419.com/article14/ddepege.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器品牌網(wǎng)站建設(shè)、企業(yè)建站虛擬主機(jī)、網(wǎng)站維護(hù)、面包屑導(dǎo)航

廣告

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

成都定制網(wǎng)站建設(shè)