rand
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、青川ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的青川網(wǎng)站制作公司
和random都是偽隨機(jī)函數(shù),一般直接讀取時(shí)間來(lái)做種子(sand(time))的也是不怎能隨機(jī)的
我給你一個(gè)我以前寫的,真正的隨機(jī):
int
myrand(void)
{
int
seed
;
asm
("rdtsc"
:
"=A"
(seed))
;
srand((unsigned
int)seed);
return
rand();
}
C語(yǔ)言隨機(jī)函數(shù)主要用于實(shí)現(xiàn)一組隨機(jī)數(shù)的生成。
代碼示例如下:
#includestdio.h
#includestdlib.h
int main ()
{
int a;
a=rand()%4;
printf("%d\n",a);
return 0;
}
C預(yù)先生成一組隨機(jī)數(shù),每次調(diào)用隨機(jī)函數(shù)時(shí)從指針?biāo)赶虻奈恢瞄_始取值,因此使用rand()重復(fù)運(yùn)行程序產(chǎn)生的隨機(jī)數(shù)都是相同的,可以通過srand()函數(shù)來(lái)改變指針位置。
擴(kuò)展資料:
C語(yǔ)言隨機(jī)函數(shù)指針位置
void srand( unsigned int seed )
改變隨機(jī)數(shù)表的指針位置(用seed變量控制)。一般配合time(NULL)使用,因?yàn)闀r(shí)間每時(shí)每刻都在改變,產(chǎn)生的seed值都不同。
基于毫秒級(jí)隨機(jī)數(shù)產(chǎn)生方法:
#includewindows.h
種子設(shè)為:srand(unsigned int seed);
srand(GetTickCount());
參考資料:百度百科-C語(yǔ)言隨機(jī)函數(shù)
rand()是表示產(chǎn)生隨機(jī)數(shù)的一種函數(shù),多應(yīng)用于循環(huán)語(yǔ)句當(dāng)中進(jìn)行判斷。
比如說n=rand();
switch(n)
{case1.......
case2......}
這些都是都可能被執(zhí)行的,因?yàn)閿?shù)字是隨機(jī)的。
擴(kuò)展資料:
注意
rand()函數(shù)可以用來(lái)產(chǎn)生隨機(jī)數(shù),但是這不是真真意義上的隨機(jī)數(shù),是一個(gè)偽隨機(jī)數(shù),是根據(jù)一個(gè)數(shù),我們可以稱它為種了,為基準(zhǔn)以某個(gè)遞推公式推算出來(lái)的一系數(shù),
當(dāng)這系列數(shù)很大的時(shí)候,就符合正態(tài)公布,從而相當(dāng)于產(chǎn)生了隨機(jī)數(shù),但這不是真正的隨機(jī)數(shù),當(dāng)計(jì)算機(jī)正常開機(jī)后,這個(gè)種子的值是定了的,除非你破壞了系統(tǒng),為了改變這個(gè)種子的值,C提供了 srand()函數(shù),它的原形是void srand( int a) ,
功能是初始化隨機(jī)產(chǎn)生器既rand()函數(shù)的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數(shù),可以產(chǎn)生可以預(yù)見的隨機(jī)序列。
參考資料來(lái)源:rand函數(shù)-百度百科