10.有序的數(shù)組,打亂成新數(shù)組(隨機(jī)數(shù)問題)
代碼如下:
用法:
它初始化隨機(jī)種子,會(huì)提供一個(gè)種子,這個(gè)種子會(huì)對(duì)應(yīng)一個(gè)隨機(jī)數(shù),如果使用相同的種子后面的rand()函數(shù)會(huì)出現(xiàn)一樣的隨機(jī)數(shù),如: srand(1); 直接使用1來初始化種子。
不過為了防止隨機(jī)數(shù)每次重復(fù),常常使用系統(tǒng)時(shí)間來初始化,即使用 time函數(shù)來獲得系統(tǒng)時(shí)間,它的返回值為從 00:00:00 GMT, January 1, 1970 到現(xiàn)在所持續(xù)的秒數(shù),然后將time_t型數(shù)據(jù)轉(zhuǎn)化為(unsigned)型再傳給srand函數(shù),即: srand((unsigned) time(&t));
還有一個(gè)經(jīng)常用法,不需要定義time_t型t變量,即: srand((unsigned) time(NULL)); 直接傳入一個(gè)空指針,因?yàn)槟愕某绦蛑型⒉恍枰?jīng)過參數(shù)獲得的數(shù)據(jù)。
?srand((unsigned) time(NULL))
關(guān)于隨機(jī)數(shù)的問題:
計(jì)算機(jī)并不能產(chǎn)生真正的隨機(jī)數(shù),而是已經(jīng)編寫好的一些無規(guī)則排列的數(shù)字存儲(chǔ)在電腦里,把這些數(shù)字劃分為若干相等的N份,并為每份加上一個(gè)編號(hào)用srand()函數(shù)獲取這個(gè)編號(hào),然后rand()就按順序獲取這些數(shù)字,
當(dāng)srand()的參數(shù)值固定的時(shí)候,rand()獲得的數(shù)也是固定的,所以一般srand的參數(shù)用time(NULL),因?yàn)橄到y(tǒng)的時(shí)間一直在變,所以rand()獲得的數(shù),也就一直在變,相當(dāng)于是隨機(jī)數(shù)了。只要用戶或第三方不設(shè)置隨機(jī)種子,那么在默認(rèn)情況下隨機(jī)種子來自系統(tǒng)時(shí)鐘。