c語言定義的隨機(jī)函數(shù) c語言如何定義隨機(jī)數(shù)

c語言隨機(jī)函數(shù)怎么用,怎么定義?

隨機(jī)函數(shù)就是產(chǎn)生數(shù)的函數(shù),c語言里有rand(),srand()等函數(shù)。

10年積累的網(wǎng)站制作、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有垣曲免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

用法

#include

#include

#include

void main( void )

{

int i,k;

srand( (unsigned)time( NULL ) ); //用系統(tǒng)時間當(dāng)種子,對隨機(jī)函數(shù)進(jìn)行初始化

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

{

k=rand()%100; //產(chǎn)生各個隨機(jī)數(shù)

printf( " k=%d/n", k );

}

}

詳述

rand() srand() 頭文件為#include

標(biāo)準(zhǔn)C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機(jī)數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關(guān)。

rand()函數(shù)沒有輸入?yún)?shù),直接通過表達(dá)式rand()來引用,rand()%n是產(chǎn)生的隨機(jī)數(shù)對n取余,起到了取0到n-1之間隨機(jī)數(shù)的作用;

例如可以用下面的語句來打印兩個隨機(jī)數(shù): printf("Random numbers are: %i %i/n",rand(),rand());

因為rand()函數(shù)是按指定的順序來產(chǎn)生整數(shù),而未指定運行的種子,所以rand()每次使用的都是同一個種子來產(chǎn)生隨機(jī)數(shù)序列,因此每次執(zhí)行上面的語句都打印相同的兩個值,所以說C語言的隨機(jī)并不是正真意義上的隨機(jī)。

為了時程序在每次執(zhí)行時都能生成一個新序列的隨機(jī)值,我們通常通過為隨機(jī)數(shù)生成器提供一粒新的隨機(jī)種子。函數(shù) srand()(來自stdlib.h)可以為隨機(jī)數(shù)生成器播散種子。只要種子不同rand()函數(shù)就會產(chǎn)生不同的隨機(jī)數(shù)序列。srand()稱為隨機(jī)數(shù)生成器的初始化器。

srand( (unsigned)time( NULL ) ); 用系統(tǒng)時間當(dāng)種子,對隨機(jī)函數(shù)進(jìn)行初始化,每次的系統(tǒng)時間不同,所以種子也就不同,產(chǎn)生的隨機(jī)數(shù)序列也就不同。

關(guān)于C語言隨機(jī)函數(shù)

srand(

time(0)

);

放在循環(huán)外每次產(chǎn)生隨機(jī)數(shù)的種子也是一樣的啊,為什么產(chǎn)生的隨機(jī)數(shù)就不一樣了?

因為隨機(jī)函數(shù)只需要一個種子就能產(chǎn)生一系列的隨機(jī)數(shù),并不是每個隨機(jī)數(shù)都需要一個種子。

你把

srand(time(0))

放到循環(huán)前面就可以了。

原因:

time(0)返回的是系統(tǒng)的時間(從1970.1.1午夜算起),單位:秒,而那個循環(huán)運行起來耗時連0.000001秒都不到!

也就是說,srand(time(0))

連著4次的種子是一樣的,種子一樣,生產(chǎn)的隨機(jī)數(shù)當(dāng)然是一樣了。

如果你在把srand()放循環(huán)里面,在中間加個sleep函數(shù),消耗一點時間(間隔大于1秒),那么生成的rand

就不一樣了.但是這樣做很不好,連著兩次用srand生成的種子,間隔一樣,生產(chǎn)的隨機(jī)數(shù)間隔有會有規(guī)律性。

另:因為兩次運行同一程序的時間肯定是不一樣的,所以把srand放在循環(huán)前面可以得不同的種子,這樣才能得到你想要的。

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

c語言隨機(jī)數(shù)函數(shù)是 rand()

若要輸出1~10之間的隨機(jī)數(shù),

可用rand()%10+1。

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

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

#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ù)這個種子的值產(chǎn)生一系列隨機(jī)數(shù)。如果系統(tǒng)提供的種子沒有變化,每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列都是一樣的。srand(unsigned seed)通過參數(shù)seed改變系統(tǒng)提供的種子值,從而可以使得每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列不同,從而實現(xiàn)真正意義上的“隨機(jī)”。通??梢岳孟到y(tǒng)時間來改變系統(tǒng)的種子值,即srand(time(NULL)),可以為rand函數(shù)提供不同的種子值,進(jìn)而產(chǎn)生不同的隨機(jī)數(shù)序列。

名稱欄目:c語言定義的隨機(jī)函數(shù) c語言如何定義隨機(jī)數(shù)
文章源于:http://www.muchs.cn/article30/dohicso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作網(wǎng)站收錄、標(biāo)簽優(yōu)化定制開發(fā)、ChatGPT、手機(jī)網(wǎng)站建設(shè)

廣告

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

成都seo排名網(wǎng)站優(yōu)化