這是典型的古典概型,直接用窮舉法計(jì)算即可。
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、高青網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為高青等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
計(jì)算思路是遍歷1到10共10個(gè)數(shù)的所有組合(用goNext函數(shù)),統(tǒng)計(jì)出組合總數(shù)count與7個(gè)數(shù)之和等于20的組數(shù)successNumber,這兩個(gè)數(shù)的商successNumber/count就是所求的概率。
計(jì)算結(jié)果為:
總次數(shù): 10000000, 成功次數(shù): 26544, 概率: 0.0026544
程序可以如下實(shí)現(xiàn):
#include stdio.h
int data[7];
int goNext()
{
int i;
for ( i = 0; i 7 ++data[i] 10; ++i ) data[i] = 1;
if ( i == 7 ) return 0;
return 1;
}
void main()
{
int i, m;
double p;
long count = 0, successNumber = 0;
for ( i = 0; i 7; ++i) data[i] = 1;
do
{
++count;
for ( i = 0, m = 0; i 7; ++i ) m += data[i];
if ( 20 == m ) ++ successNumber;
} while ( goNext() );
p = (double) successNumber / (double) count;
printf("總次數(shù): %d, 成功次數(shù): %d, 概率: %.7lf\n", count, successNumber, p);
}
計(jì)算機(jī)里的取隨機(jī)數(shù)函數(shù)是均勻分布的隨機(jī)數(shù)。
0.0005的概率,相當(dāng)于2000個(gè)數(shù)里取一個(gè)。
所以我們可以
在0到1999范圍里取隨機(jī)數(shù),如果取到數(shù)值
1000,我們就得1(并響鈴),否則得0。
#include
stdio.h
#include
stdlib.h
#include
math.h
#include
time.h
void
main()
{
long
int
i,y;
double
x,
r,
M
=
2000.0;
srand((unsigned)time(NULL));
for
(i=0;i5000;i++)
//
取5000個(gè)
{
r
=
(
(double)rand()
/
((double)(RAND_MAX)+(double)(1))
);
x
=
(r
*
M);
y
=
(long
int)
x;
if
(y
==
1000)
{
printf("1
");printf("\007");
//
如果得1,就響鈴!
}
else
printf("0
");
};
}
現(xiàn)成的函數(shù)沒有,可以通過產(chǎn)生隨機(jī)數(shù)實(shí)現(xiàn)概率。
srand((unsigned)time(NULL));
int m,r=0;
m=rand()%10;
if(m==1||m==2||m==3||m==4||m==5||m==6||m==7)
{
r=r+1;
}
這段代碼中,執(zhí)行r=r+1的概率就是0.7
希望可以幫到你
#includestdio.h
#include?stdlib.h
#include?time.h
int?main(int?argc,?char?*argv[])
{?srand((unsigned?int)time(NULL));
int?d1=0,j,n=10000;
int?i=1,i1=0,i2=0,i3=0,i4=0,i5=0,i6=0;
//i為總次數(shù),i1~i6為數(shù)字1~6出現(xiàn)的次數(shù)累加
float?p1,p2,p3,p4,p5,p6;
//數(shù)字1~6出現(xiàn)的概率
for(j=0;jn;j++)
{d1=rand()%6+1;
switch(d1)?
{case?1:i1+=1;?break;
case?2:i2+=1;??break;
case?3:i3+=1;?p3=i3/i;?break;
case?4:i4+=1;?p4=i4/i;?break;
case?5:i5+=1;?p5=i5/i;?break;
case?6:i6+=1;?p6=i6/i;break;
default:break;
}
}
i=i1+i2+i3+i4+i5+i6;
p1=(float)i1/i;
p2=(float)i2/i;
p3=(float)i3/i;
p4=(float)i4/i;
p5=(float)i5/i;
p6=(float)i6/i;
printf("i1=%d?p1=%.4f??i=%d\n",i1,p1,i);
printf("i2=%d?p2=%.4f??i=%d\n",i2,p2,i);
printf("i3=%d?p3=%.4f??i=%d\n",i3,p3,i);
printf("i5=%d?p5=%.4f??i=%d\n",i5,p5,i);
printf("i6=%d?p6=%.4f??i=%d\n",i6,p6,i);
system("pause");
return?0;
}?
其實(shí)這題用數(shù)組就簡(jiǎn)單多了。
隨機(jī)生成一個(gè)數(shù)倒是可以,概率的話,直接用1除以生成的數(shù)就可以了
沒有的
C語言是屬于中級(jí)語言
而且不是面向數(shù)學(xué)計(jì)算的語言
不過對(duì)于這種功能的函數(shù)是可以用C語言自己寫出來的