|
今天本來(lái)看數(shù)據(jù)結(jié)構(gòu)的,結(jié)果發(fā)現(xiàn)有這么句話srand(time(0)),注釋是初始化隨機(jī)數(shù)種子,結(jié)果發(fā)現(xiàn)time(0)不解,好像以前看到過(guò),然后網(wǎng)上查了下,發(fā)現(xiàn)了time.h這個(gè)頭文件中有此函數(shù)
typedef long time_t;
time_t time(time_t *);
這個(gè)函數(shù)的返回值和形參都是返回從1970年1月1日0時(shí)0分0秒到現(xiàn)在的秒數(shù),所以用long型,當(dāng)然也可以給形參傳個(gè)NULL
往后看了下,還有幾個(gè)實(shí)用函數(shù)
struct tm * gmtime(const time_t *);
struct tm * localtime(const time_t *);
tm定義成以下結(jié)構(gòu)體
struct tm {
inttm_sec;
inttm_min;
inttm_hour;
inttm_mday;
inttm_mon;
inttm_year;
inttm_wday;
inttm_yday;
int tm_isdst;
};
看這函數(shù)名一個(gè)是獲取格林威治時(shí)間,另一個(gè)是獲取本地時(shí)區(qū)的時(shí)間
于是寫(xiě)了個(gè)程序測(cè)了下,還真是如此
time_t timer;
tm *stm;
time(&timer);
stm=localtime(&timer);
然后當(dāng)前的時(shí)間信息就被保存在stm指向的結(jié)構(gòu)體中。
好了回到正題
函數(shù)一:int rand(void);
從srand (seed)中指定的seed開(kāi)始,返回一個(gè)[seed, RAND_MAX(0x7fff))間的隨機(jī)整數(shù)。
函數(shù)二:void srand(unsigned seed);
參數(shù)seed是rand()的種子,用來(lái)初始化rand()的起始值。
seed如果是固定值,那么每次產(chǎn)生的隨機(jī)數(shù)也是固定不變的,通常的做法是 以這樣一句代碼srand((unsigned)time(NULL));來(lái)取代,這樣將使得種子為一個(gè)不固定的數(shù),這樣產(chǎn)生的隨機(jī)數(shù)就不會(huì)每次執(zhí)行都一樣了。
|
|