rand函數(shù)也是調(diào)用dos的時(shí)鐘,進(jìn)行的偽隨機(jī)函數(shù)。
目前成都創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、營(yíng)口網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
你也可以使用時(shí)鐘來模擬隨機(jī)函數(shù)。
可以試用gettime這個(gè)函數(shù):
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(t1);
int y1=t1.ti_hund;//取1/100s作為基數(shù)
gettime(t2);
int y2=t2.ti_hund;//粗塵取1/100s作為基數(shù)
gettime(t3);
int y3=t3.ti_hund;//取1/100s作則凳數(shù)為基數(shù)
return y1*y2*y3;/孫首/產(chǎn)生的隨機(jī)數(shù)0~99*99*99
}
C語言/C++怎樣產(chǎn)生隨機(jī)數(shù):這里要用到的是rand()函數(shù), srand()函數(shù),C語言/C++里沒有自帶的random(int number)函數(shù)。
(1) 如果你老仔只要產(chǎn)生隨機(jī)數(shù)而不需要設(shè)定范圍的話,你只要用rand()就可以了:rand()會(huì)返回一隨機(jī)數(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) 如果你要隨機(jī)生成一個(gè)在一定范圍的數(shù),你可以在宏定義中定義一個(gè)random(int number)函數(shù),然后在main()里面直接調(diào)用random()函數(shù):例如:隨機(jī)生成10個(gè)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)但是上面兩個(gè)例子所生成的隨機(jī)數(shù)都只能是一次性的,如果你第二次運(yùn)行的時(shí)候輸出結(jié)果仍和第一次一樣。這與srand()函數(shù)有關(guān)。srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。在調(diào)用rand()函數(shù)派叢產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子(seed), 如果未設(shè)隨機(jī)數(shù)種子, rand()在調(diào)用時(shí)會(huì)自動(dòng)設(shè)隨機(jī)數(shù)種子為1。上面的兩個(gè)例子就是因?yàn)闆]有設(shè)置隨機(jī)數(shù)侍羨汪種子,每次隨機(jī)數(shù)種子都自動(dòng)設(shè)成相同值1 ,進(jìn)而導(dǎo)致rand()所產(chǎn)生的隨機(jī)數(shù)值都一樣。srand()函數(shù)定義 : void srand (unsigned int seed);
通常可以利用geypid()或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));
}這樣兩次運(yùn)行的結(jié)果就會(huì)不一樣了??!
1、首先打開Visual stdio 2019,依次點(diǎn)擊文件,新建,項(xiàng)目新建以一個(gè)空白的項(xiàng)目:
2、新建新項(xiàng)目以后,右鍵點(diǎn)擊左邊的源文件,選擇添加,點(diǎn)擊添加項(xiàng):
3、選擇cpp,并將下方的擴(kuò)展名改為.c,然后點(diǎn)擊確定:
4、接下來就可以用編譯器編譯,使用rand()函數(shù)產(chǎn)生C語言的隨機(jī)數(shù),需要加入stdlib.h和time.h在表頭,rand()函數(shù)寬宴喚需要給srand()函數(shù)提供一個(gè)參數(shù),不然系統(tǒng)會(huì)給定一個(gè)默認(rèn)的參數(shù),如果參數(shù)為一任意的常量的話,得到的也是偽慎凱隨機(jī)數(shù):
4、按ctrl+F5就可以運(yùn)行程序祥敏了,在彈出的窗口中就會(huì)看到得到的所有隨機(jī)數(shù)了: