c語言經(jīng)典宏函數(shù) c語言rand函數(shù)?
c語言rand函數(shù)?Rand函數(shù),C語言中用來生成隨機(jī)數(shù)的函數(shù)。Rand函數(shù)邊界:stdlib.h頭文件中有一個(gè)宏#define RAND_MAX 0x7fff。Rand生成一個(gè)0-0x7fff的隨機(jī)
c語言rand函數(shù)?
Rand函數(shù),C語言中用來生成隨機(jī)數(shù)的函數(shù)。
Rand函數(shù)邊界:stdlib.h頭文件中有一個(gè)宏#define RAND_MAX 0x7fff。
Rand生成一個(gè)0-0x7fff的隨機(jī)數(shù),即一個(gè)最大值為32767的數(shù)。
Rand函數(shù)原型
#包含ltstdlib.hgt
整數(shù)(無效)
Rand函數(shù)調(diào)用
在每次調(diào)用之前,rand()函數(shù)會(huì)查詢是否調(diào)用了srand(seed)以及是否為seed設(shè)置了值。如果是,它會(huì)自動(dòng)調(diào)用一次srand(seed)來初始化它的初始值。
如果之前沒有調(diào)用過srand(seed),系統(tǒng)會(huì)自動(dòng)給種子賦一個(gè)初始值,即srand(1)自動(dòng)調(diào)用一次。
Srand函數(shù)
Srand函數(shù)是隨機(jī)數(shù)發(fā)生器的初始化函數(shù),原型:
void srand(無符號(hào)整型種子)
這個(gè)函數(shù)需要提供一個(gè)種子,比如srand(1),用1初始化種子。
rand()生成隨機(jī)數(shù)時(shí),如果種子是用srand(seed)播的,一旦種子相同(下面的getpid方法),生成的隨機(jī)數(shù)也就相同了。當(dāng)然很多時(shí)候rand()生成的隨機(jī)數(shù)是故意隨機(jī)化的,用time作為種子srand(time(NULL),這樣每次運(yùn)行程序的時(shí)間肯定不一樣,生成的隨機(jī)數(shù)也肯定不一樣。
我們經(jīng)常用系統(tǒng)時(shí)間來初始化,用time函數(shù)來獲取系統(tǒng)時(shí)間。得到的值是一個(gè)時(shí)間戳,即從1970年1月1日0: 00到現(xiàn)在的秒數(shù),然后將得到的time_t類型數(shù)據(jù)轉(zhuǎn)換成(無符號(hào)int)數(shù),然后傳遞給srand函數(shù)。用法如下:
Srand((unsigned int)time(null))//我們?cè)谑褂胷and和SRAND時(shí)主要使用這種初始化方法!!
如果還是覺得時(shí)間間隔太小,可以在(無符號(hào))時(shí)間(0)或(無符號(hào))時(shí)間(NULL)后乘以一個(gè)合適的整數(shù)。例如,srand((無符號(hào))時(shí)間(空)*10)
當(dāng)time的參數(shù)傳遞NULL時(shí),表示獲取time_t數(shù)據(jù)時(shí)沒有參數(shù)。時(shí)間函數(shù)的原型如下。
time _ t time(time _ t * tloc)//tim
c語言中聲明max函數(shù)的意義何在?
Max函數(shù)一般取最大值并返回。C庫函數(shù)中沒有max函數(shù),一般根據(jù)需求定制max函數(shù):
int max(int a,int b)
{
if(ab)返回a;
返回b;
}
或者定制為宏功能:
#定義max(a,b) ((a)(b)(a):(b))