重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
rand函數(shù)
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比泉山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式泉山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋泉山地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
函數(shù)頭文件:stdlib.h
函數(shù)定義:int rand(void)
函數(shù)功能:產(chǎn)生一個隨機數(shù)
函數(shù)說明:
rand函數(shù)產(chǎn)生的隨機數(shù)嚴格意義講不是真正的隨機數(shù),它里面采用了線性同余法計算出隨機數(shù),所謂的線性同語法簡單來說就是使用了一個公式。
該方法有個最大周期M,也就是說該方法實在一定的范圍內(nèi)生成一串數(shù)字,不過這個M一般來說比較大,所以正常使用時一般看起來就是產(chǎn)生了隨機的數(shù)。
不過這個函數(shù)由于默認種子是1,所以每次產(chǎn)生的隨機數(shù)都是相同的,也就是說每次運行程序,產(chǎn)生的隨機數(shù)都是一樣的,失去了部分隨機的意義,所以一般會配合srand函數(shù)使用。
返回值: 返回0至RAND_MAX之間的隨機整數(shù)值,RAND_MAX的范圍最小在32767之間。若用unsigned int 雙字節(jié)是65535,四字節(jié)是4294967295的整數(shù)范圍。且0-RAND_MAX每個數(shù)字被選中的機率是相同的。
srand函數(shù)
函數(shù)頭文件:stdlib.h
函數(shù)定義:void srand(unsigned int seed)
函數(shù)功能:設(shè)置隨機數(shù)種子
函數(shù)說明:通常可以用getpid()(獲取當前進程的進程識別碼)或者time(NULL)(獲取當前系統(tǒng)的時間信息)來充當種子,保持每次運行時種子是不一樣的。
擴展資料
當srand()的內(nèi)容相同時,則在rand()后產(chǎn)生相同的隨機數(shù)列;所以當用time(NULL)來進行初始隨機數(shù),根據(jù)時間來產(chǎn)生隨機數(shù),這樣就能產(chǎn)生不同的。
調(diào)用方法是srand(GetTickCount()),但是又不能在每次調(diào)用rand()的時候都用srand(GetTickCount())來初始化。
因為現(xiàn)在計算機運行時間比較快,當連續(xù)調(diào)用rand()時,系統(tǒng)的時間還沒有更新,所以得到的隨機種子在一段時間內(nèi)是完全相同的,因此一般只在進行一次大批隨機數(shù)產(chǎn)生之前進行一次隨機種子的初始化。
參考資料:百度百科——rand函數(shù)
rand()函數(shù),一般根srand()函數(shù)一起用。它們在一起,作用是:產(chǎn)生一個隨機數(shù)。
通常格式為:
srand
(
(unsigned)
time
(NULL)
);
a=rand()%x;
//a,x,均為整型變量,其中,x在之前應(yīng)被賦值。
srand函數(shù)里面的unsigned也可以換成其它的。例如:int之類的數(shù)據(jù)類型,但結(jié)果也會有相應(yīng)的變化。
通過rand函數(shù)產(chǎn)生隨機數(shù)以后,用%x來限定它的范圍。即:0=a
評論
加載更多
在c語言里面,兩個函數(shù)包含在頭文件里面,c++里面,標準庫(被包含于中). srand函數(shù)是隨機數(shù)發(fā)生器的初始化函數(shù)。 原型:void srand(unsigned seed); rand函數(shù)用來產(chǎn)生隨機數(shù),當然是偽隨機數(shù)。
呵呵,這個是我遇到過的問題,并進行了一些研究。其實這是因為srand()函數(shù)是一個隨機數(shù)產(chǎn)生函數(shù),其意思就是指c語言里的隨機數(shù)都是由它來控制產(chǎn)生的!!!如果在應(yīng)用srand()函數(shù)之前就用隨機函數(shù)rand(),則相當于使用了srand(1);
而將srand((unsigned)time(null));這條語句放在了for循環(huán)里,即是用了srand((unsigned)time(0));故此句語句不變的話,產(chǎn)生的隨機數(shù)就不變!!!不懂的話可以問我!
c語言中 srand(time(NULL)); 的意思是:使用當前時間進行隨機數(shù)發(fā)生器的初始化。
time_t time(time_t *t); 是C標準庫函數(shù),如果t是空指針(NULL),直接返回當前時間。如果t不是空指針,返回當前時間的同時,將返回值賦予t指向的內(nèi)存空間。time() 是指返回自 Unix 紀元起的當前時間的秒數(shù)的函數(shù),主要用來獲取當前的系統(tǒng)時間,返回的結(jié)果是一個time_t類型。
srand函數(shù)是隨機數(shù)發(fā)生器的初始化函數(shù)。原型:void srand(unsigned int seed); srand和rand()配合使用產(chǎn)生偽隨機數(shù)序列。
擴展資料:
srand函數(shù)的相關(guān)信息:
1、語法:void srand (unsigned seed);
2、參數(shù)說明:unsigned seed:隨機數(shù)產(chǎn)生器的初始值(種子值)。
3、功能說明:srand設(shè)置產(chǎn)生一系列偽隨機數(shù)發(fā)生器的起始點,要想把發(fā)生器重新初始化,可用1作seed值。任何共它的值都把發(fā)生器匿成一個隨機的起始點。rand檢索生成的偽隨機數(shù)。在任何調(diào)用srand之前調(diào)用rand與以1作為seed調(diào)用srand產(chǎn)生相同的序列。
此函數(shù)可以設(shè)定rand函數(shù)所用的隨機數(shù)產(chǎn)生演算法的種子值。任何大于一的種子值都會將rand隨機數(shù)所產(chǎn)生的虛擬隨機數(shù)序列重新設(shè)定一個起始點。
4、包含文件:stdlib. h
5、返回值:無
參考資料來源:百度百科-time()
參考資料來源:百度百科-srand
srand()函數(shù)用來設(shè)置算法的種子,time(NULL)返回當前的時間,先調(diào)用srand(time(NULL))是把當前的時間作為種子,是程序每次運行產(chǎn)生不同的隨機數(shù)序列。
涉及到三個概念:
1、隨機數(shù):數(shù)學上產(chǎn)生的都是偽隨機數(shù),真正的隨機數(shù)使用物理方法產(chǎn)生的。
2、隨機數(shù)種子:隨機數(shù)的產(chǎn)生是由算術(shù)規(guī)則產(chǎn)生的,srand(seed)的隨機數(shù)種子不同,rand()的隨機數(shù)值就不同,倘若每次的隨機數(shù)種子一樣,則rand()的值就一樣。所以要產(chǎn)生隨機數(shù),則srand(seed)的隨機數(shù)種子必須也要隨機的。
3、用srand()產(chǎn)生隨機數(shù)種子
原型:void srand ( unsigned int seed )。作用是設(shè)置好隨機數(shù)種子,為了讓隨機數(shù)種子是隨機的,通常用time(NULL)的值來當seed。
擴展資料:
C語言其他產(chǎn)生隨機數(shù)的方法。
1、函數(shù)名: rand
功能: 隨機數(shù)發(fā)生器
用法: void rand(void);
程序例:
2、函數(shù)名: random
功能: 隨機數(shù)發(fā)生器
用法: int random(int num);
程序例:
3、函數(shù)名: randomize
功能: 初始化隨機數(shù)發(fā)生器
用法: void randomize(void);
程序例:
參考資料來源:百度百科--srand