新聞中心
c語言隨機數(shù)函數(shù)是什么?
C語言隨機函數(shù)主要用于實現(xiàn)一組隨機數(shù)的生成。
十多年的荔灣網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整荔灣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“荔灣網(wǎng)站設(shè)計”,“荔灣網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
代碼示例如下:
#includestdio.h
#includestdlib.h
int main ()
{
int a;
a=rand()%4;
printf("%d\n",a);
return 0;
}
C預(yù)先生成一組隨機數(shù),每次調(diào)用隨機函數(shù)時從指針?biāo)赶虻奈恢瞄_始取值,因此使用rand()重復(fù)運行程序產(chǎn)生的隨機數(shù)都是相同的,可以通過srand()函數(shù)來改變指針位置。
擴展資料:
C語言隨機函數(shù)指針位置
void srand( unsigned int seed )
改變隨機數(shù)表的指針位置(用seed變量控制)。一般配合time(NULL)使用,因為時間每時每刻都在改變,產(chǎn)生的seed值都不同。
基于毫秒級隨機數(shù)產(chǎn)生方法:
#includewindows.h
種子設(shè)為:srand(unsigned int seed);
srand(GetTickCount());
參考資料:百度百科-C語言隨機函數(shù)
C語言編CAI...要哭了,求大神指點!
這個題目還是不錯的,比較考程序流程和函數(shù)的使用,我寫了一個大概的樣子。你看看有沒有問題,有不懂的,請追問:
#include?stdio.h
#include?conio.h
#include?stdlib.h
#include?time.h
#include?math.h
typedef?struct?//?定義結(jié)構(gòu)體存儲隨機操作數(shù)
{
int?a;?
int?b;
}RandNum;?
//?獲得隨機操作數(shù)函數(shù)
RandNum?GetRandNums()
{
RandNum?rn?=?{0,?0};
rn.a?=?rand()%10?+?1;
rn.b?=?rand()%10?+?1;
return?rn;
}
//?獲得隨機操作符函數(shù)
int?GetOperator()
{
//srand((unsigned)time(NULL)?);?
return?rand()%4+1;
}
//?任務(wù)1
int?task1()
{?
RandNum?rn?=?GetRandNums();?//?獲得隨機操作數(shù)
int?a=rn.a,?b=rn.b;
int?ans?=?0;????//?用戶輸入的答案變量
printf("%d*%d=?\t",?rn.a,?rn.b);
scanf("%d",?ans);
if?(ans?==?a*b)
{
printf("Right!");
return?1;
}
else
{
printf("Wrong!Please?try?again.\n");
return?0;
}
}
//?任務(wù)2
int?task2()
{?
int?i;
for(i=0;?i3;?i++)
{
if(1?==?task1())??
break;???
}
if(i?==?3)
{
printf("Wrong!You?have?tried?three?times!Test?over!");
return?0;
}
else?
return?1;
}
//?任務(wù)3
int?task3()
{
int?i,?RightNum=0;
printf("\tYou?will?answer?10?problems.\n");
for(i=0;?i10;?i++)
{
printf("Problem?%d\t",?i+1);
if(1?==?task1())??
RightNum?+=?1;??
system("cls");
}
printf("Your?total?score?is:?%d\n",?RightNum*10);
printf("You?answer?accuracy?is:?%d%%\n",?RightNum*10);
return?0;
}
//?任務(wù)4
int?task4()
{
int?flag=0,?RightNum?=?0;
RandNum?rn?=?{0,?0};
float?a=rn.a,?b=rn.b;
int?op?=?0;?????//?操作符變量?1234?對應(yīng)于?+-*/
float?ans?=?0,?err?=?1;
printf("You?will?answer?10?problems.\n");
for(int?i=0;?i10;?i++)
{
rn?=?GetRandNums();??//?獲得新的隨機操作數(shù)
op?=?GetOperator();??//?獲得新的隨機操作服?
a?=?rn.a;
b?=?rn.b;
flag?=?0;????//?回答正確與否標(biāo)志位,初始化為0
switch?(op)
{
case?1:?????//?若為+
printf("%.0f+%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a+b));
if(err?==?0?)
flag?=?1;
break;
case?2:?????//?若為-
printf("%.0f-%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a-b));
if(err?==?0)
flag?=?1;
break;
case?3:?????//?若為*
printf("%.0f*%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a*b));
if(err?==?0)
flag?=?1;
break;
case?4:?????//?若為/
printf("%.0f/%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a/b));
if(err??1e-4)
flag?=?1;
break;
}
if(flag)????//?若回答正確
{
printf("\t\tRight!\n");
RightNum?+=?1;
}
else?
printf("\t\tWrong!\n");
}
printf("Your?total?score?is:%d",?RightNum*10);
return?RightNum*10;
}
//?任務(wù)5
int?task5()
{
int?accuracy?=?0,?i=0;?
while?(accuracy??75)
{
printf("This?is?your?%d?st?try:\n",?i+1);
accuracy?=?task4();
if(accuracy??75)
{
i++;
system("cls");
}
}
printf("\n\tGood!\n");
return?1;
}
//?對答案判別函數(shù)(任務(wù)6中用到),判別回答的精確度
//?答案誤差1e-2?為Right,1e-3為Good,1e-4為Excellent,1e-5為Perfect
int?judge(float?err)
{
int?option?=?0;
float?base?=?1e5;
for?(int?i=0;?i4;?i++)?//?判斷誤差級別
{
if?(err*base??1)
{
option?=?4-i;
break;
}
base?=?base?/?10;
}
switch?(option)
{
case?1:??????//?誤差級別1,?err1e-2
printf("\t\tRight!\n");
break;
case?2:??????//?誤差級別2,?err1e-3
printf("\t\tGood!\n");
break;
case?3:??????//?誤差級別3,?err1e-4
printf("\t\tExcellent!\n");
break;
case?4:??????//?誤差級別4,?err1e-5
printf("\t\tPerfect!!\n");
break;
default:?????//?若誤差級別不在范圍內(nèi),判為錯誤
printf("\t\tWrong!\n");
return?0;
break;
}
return?1;
}
//?任務(wù)6
int?task6()
{
int?flag=0,?RightNum?=?0;
RandNum?rn?=?{0,?0};
float?a=rn.a,?b=rn.b;
int?op?=?0;
float?ans?=?0,?err?=?1;
printf("You?will?answer?10?problems.\n");
for(int?i=0;?i10;?i++)
{
rn?=?GetRandNums();
op?=?GetOperator();
a?=?rn.a;
b?=?rn.b;
flag?=?0;
switch?(op)
{
case?1:?
printf("%.0f+%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a+b));??//?獲得用戶的回答與答案的誤差
flag?=?judge(err);???
break;
case?2:
printf("%.0f-%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a-b));
flag?=?judge(err);??
break;
case?3:
printf("%.0f*%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a*b));
flag?=?judge(err);??
break;
case?4:
printf("%.0f/%.0f=?\t",?a,?b);
scanf("%f",?ans);
err?=?abs(ans?-?(a/b));
flag?=?judge(err);??
break;
}
if(flag)
{???
RightNum?+=?1;
}
}
printf("Your?total?score?is:%d",?RightNum*10);
return?RightNum*10;
}
//?主函數(shù)
int?main(void)
{
srand((unsigned)time(NULL)?);?
task6();
getch();
return?0;
}
C語言中產(chǎn)生隨機數(shù)的函數(shù)是什么?
c語言中產(chǎn)生隨機數(shù)的相關(guān)函數(shù)主要包括srand和rand函數(shù),兩者配合生成隨機數(shù)據(jù),測試代碼如下,
#includestdio.h
#include stdlib.h
#include time.h
void main()
{
int i=0,j=0;
int p[5][5]={0};
srand(time(NULL));
for(i=0;i5;i++)
for(j=0;j5;j++)
p[i][j]=rand()%100+1;//產(chǎn)生1-100的隨機數(shù)存入數(shù)組p中
printf("二維數(shù)組p為:\n");
for(i=0;i5;i++)
{
for(j=0;j5;j++)
printf("%d\t",p[i][j]);
printf("\n");
}
}
一般srand和rand配合使用產(chǎn)生偽隨機數(shù)序列。rand函數(shù)在產(chǎn)生隨機數(shù)前,需要系統(tǒng)提供的生成偽隨機數(shù)序列的種子,rand根據(jù)這個種子的值產(chǎn)生一系列隨機數(shù)。如果系統(tǒng)提供的種子沒有變化,每次調(diào)用rand函數(shù)生成的偽隨機數(shù)序列都是一樣的。srand(unsigned seed)通過參數(shù)seed改變系統(tǒng)提供的種子值,從而可以使得每次調(diào)用rand函數(shù)生成的偽隨機數(shù)序列不同,從而實現(xiàn)真正意義上的“隨機”。通常可以利用系統(tǒng)時間來改變系統(tǒng)的種子值,即srand(time(NULL)),可以為rand函數(shù)提供不同的種子值,進(jìn)而產(chǎn)生不同的隨機數(shù)序列。
當(dāng)前標(biāo)題:c語言中的cai隨機函數(shù) c語言隨機變量函數(shù)
分享路徑:http://www.dlmjj.cn/article/dodepoj.html