C語(yǔ)言隨機(jī)函數(shù)主要用于實(shí)現(xiàn)一組隨機(jī)數(shù)的生成。
創(chuàng)新互聯(lián)致力于網(wǎng)站建設(shè),網(wǎng)站制作設(shè)計(jì),營(yíng)銷網(wǎng)頁(yè)按需開發(fā)網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站建設(shè),微信小程序開發(fā),網(wǎng)站SEO優(yōu)化,網(wǎng)站設(shè)計(jì)制作案例豐富,是成都做網(wǎng)站公司和建站公司,歡迎咨詢。
代碼示例如下:
#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ù)都是相同的,可以通過(guò)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ù)
你在函數(shù)里面生成的隨機(jī)數(shù)種子,而計(jì)算機(jī)運(yùn)行速度又很快,時(shí)間幾乎沒差別,種子完全一樣,生成的隨機(jī)數(shù)當(dāng)然一樣。
改成下面樣子就OK了:
void main()
{
int i1,i2,i3,i;
srand (time(NULL));//加到這個(gè)位置
i2=suiji();
printf("%d",i2);
i1=suiji();
printf("%d",i1);
}
int suiji()
{
int a;
int t=1,d=18;
//srand (time(NULL));
a=rand()%(d-t)+t;
return a;
}
其實(shí)只要做一次種,然后再調(diào)用rand()就能產(chǎn)生不同的結(jié)果了,不用每次調(diào)用rand()之前都用srand()做種的
也就是說(shuō)你那個(gè)程序可以改為
srand(time(0));
for(a=0; a200; a++)
{ /* Two adjacent values of random numbers must be different */
R=rand()/(RAND_MAX+1.0);
b=int(R*num) + 1;
}
如何運(yùn)用time函數(shù)和srand函數(shù)生成隨機(jī)數(shù)
#include stdio.h
#include stdlib.h//srand()、rand()
#include time.h//time();
#define N 50
int main()
{
int n;
srand((unsigned)time(NULL));//設(shè)置隨機(jī)數(shù)種子
while (1)
{
n = (rand() % 10) + 1 ;//產(chǎn)生1~10的隨機(jī)數(shù)
//rand()產(chǎn)生的是一個(gè)很大的數(shù),對(duì)其求余就可以達(dá)到限定范圍的目的
printf("%d ", n);
}
return 0;
}