c語言調(diào)用函數(shù)隨機數(shù) c語言隨機函數(shù)srand

C語言中獲得隨機數(shù)的方法

C語言/C++怎樣產(chǎn)生隨機數(shù):這里要用到的是rand()函數(shù), srand()函數(shù),C語言/C++里沒有自帶的random(int number)函數(shù)。

化德ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

(1) 如果你只要產(chǎn)生隨機數(shù)而不需要設(shè)定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數(shù)值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。

例如:#includestdio.h

#includestdlib.h

void main()

{

for(int i=0;i10;i+)

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

} (2) 如果你要隨機生成一個在一定范圍的數(shù),你可以在宏定義中定義一個random(int number)函數(shù),然后在main()里面直接調(diào)用random()函數(shù):例如:隨機生成10個0~100的數(shù):

#includestdio.h

#includestdlib.h

#define random(x) (rand()%x)

void main()

{

for(int x=0;x10;x++)

printf("%d\n",random(100));

} (3)但是上面兩個例子所生成的隨機數(shù)都只能是一次性的,如果你第二次運行的時候輸出結(jié)果仍和第一次一樣。這與srand()函數(shù)有關(guān)。srand()用來設(shè)置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。在調(diào)用rand()函數(shù)產(chǎn)生隨機數(shù)前,必須先利用srand()設(shè)好隨機數(shù)種子(seed), 如果未設(shè)隨機數(shù)種子, rand()在調(diào)用時會自動設(shè)隨機數(shù)種子為1。上面的兩個例子就是因為沒有設(shè)置隨機數(shù)種子,每次隨機數(shù)種子都自動設(shè)成相同值1 ,進而導(dǎo)致rand()所產(chǎn)生的隨機數(shù)值都一樣。srand()函數(shù)定義 : void srand (unsigned int seed);

通??梢岳胓eypid()或time(0)的返回值來當(dāng)做seed

如果你用time(0)的話,要加入頭文件#includetime.h例如:

#includestdio.h

#includestdlib.h

#includetime.h

#define random(x) (rand()%x)

void main()

{ srand((int)time(0));

for(int x=0;x10;x++)

printf("%d\n",random(100));

}這樣兩次運行的結(jié)果就會不一樣了?。?/p>

C語言中取隨機數(shù)的函數(shù)

1. 基本函數(shù)

在C語言中取隨機數(shù)所需要的函數(shù)是:

 int rand(void); void srand (unsigned int n);

rand()函數(shù)和srand()函數(shù)被聲明在頭文件stdlib.h中,所以要使用這兩個函數(shù)必須包含該頭文件:

 #include stdlib.h

2. 使用方法

rand()函數(shù)返回0到RAND_MAX之間的偽隨機數(shù)(pseudorandom)。RAND_MAX常量被定義在stdlib.h頭文件中。其值等于32767,或者更大。

srand()函數(shù)使用自變量n作為種子,用來初始化隨機數(shù)產(chǎn)生器。只要把相同的種子傳入srand(),然后調(diào)用rand()時,就會產(chǎn)生相同的隨機數(shù)序列。因此,我們可以把時間作為srand()函數(shù)的種子,就可以避免重復(fù)的發(fā)生。如果,調(diào)用rand()之前沒有先調(diào)用srand(),就和事先調(diào)用srand(1)所產(chǎn)生的結(jié)果一樣。

舉個例子,假設(shè)我們要取得0~10之間的隨機整數(shù)(不含10本身):

 /* 例1:不指定種子的值 */

 for (int i=0; i10; i++) { printf("%d ", rand()%10); }

  每次運行都將輸出:1 7 4 0 9 4 8 8 2 4

 /* 例2:指定種子的值為1 */

 srand(1); for (int i=0; i10; i++) { printf("%d ", rand()%10); }

  每次運行都將輸出:1 7 4 0 9 4 8 8 2 4

  例2的輸出結(jié)果與例1是完全一樣的。

 /* 例3:指定種子的值為8 */ srand(8); for (int i=0; i10; i++) { printf("%d ", rand()%10); }

  每次運行都將輸出:4 0 1 3 5 3 7 7 1 5

  該程序取得的隨機值也是在[0,10)之間,與srand(1)所取得的值不同,但是每次運行程序的結(jié)果都相同。

 /* 例4:指定種子值為現(xiàn)在的時間 */ srand((unsigned)time(NULL)); for (int i=0; i10; i++) { printf("%d ", rand()%10); }

  該程序每次運行結(jié)果都不一樣,因為每次啟動程序的時間都不同。另外需要注意的是,使用time()函數(shù)前必須包含頭文件time.h。

 3. 注意事項

求一定范圍內(nèi)的隨機數(shù)。

  如要取[0,10)之間的隨機整數(shù),需將rand()的返回值與10求模。

 randnumber = rand() % 10;

  那么,如果取的值不是從0開始呢?你只需要記住一個通用的公式。

  要取[a,b)之間的隨機整數(shù)(包括a,但不包括b),使用:

  (rand() % (b - a)) + a

偽隨機浮點數(shù)。

  要取得0~1之間的浮點數(shù),可以用:

  rand() / (double)(RAND_MAX)

  如果想取更大范圍的隨機浮點數(shù),比如0~100,可以采用如下方法:

  rand() /((double)(RAND_MAX)/100) 其他情況,以此類推,這里不作詳細說明。

c語言中rand()函數(shù)怎么用?

rand函數(shù)功能為獲取一個偽隨機數(shù)(偽隨機數(shù)的概念下面會有介紹)。

一、函數(shù)名:

rand();

二、聲明:

int rand();

三、所在頭文件:

stdlib.h

四、功能:

返回一個偽隨機數(shù)。之所以說是偽隨機數(shù),是因為在沒有其它操作下,每次執(zhí)行同一個程序,調(diào)用rand得到的隨機數(shù)序列是固定的(不是真正的“隨機”)。

五、為了使rand的結(jié)果更“真”一些,也就是令其返回值更具有隨機性(不確定性),C語言在stdlib.h中還提供了srand函數(shù),通過該函數(shù)可以設(shè)置一個隨機數(shù)種子,一般用當(dāng)前時間的毫秒數(shù)來做參數(shù)。通過time(NULL)可以獲取到當(dāng)前時間的毫秒值(該函數(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;

}

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

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

代碼示例如下:

#includestdio.h

#includestdlib.h

int main ()

{

int a;

a=rand()%4;

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

return 0;

}

C預(yù)先生成一組隨機數(shù),每次調(diào)用隨機函數(shù)時從指針所指向的位置開始取值,因此使用rand()重復(fù)運行程序產(chǎn)生的隨機數(shù)都是相同的,可以通過srand()函數(shù)來改變指針位置。

擴展資料:

C語言隨機函數(shù)指針位置

void srand( unsigned int seed )

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

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

#includewindows.h

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

srand(GetTickCount());

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

當(dāng)前文章:c語言調(diào)用函數(shù)隨機數(shù) c語言隨機函數(shù)srand
當(dāng)前鏈接:http://bm7419.com/article32/ddeggpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、用戶體驗外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)頁設(shè)計公司、小程序開發(fā)

廣告

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

外貿(mào)網(wǎng)站建設(shè)