这是典型的古典概型,直接用穷举法计算即可。
成都创新互联专注于企业成都全网营销、网站重做改版、高青网站定制设计、自适应品牌网站建设、H5高端网站建设、商城系统网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为高青等各大城市提供网站开发制作服务。
计算思路是遍历1到10共10个数的所有组合(用goNext函数),统计出组合总数count与7个数之和等于20的组数successNumber,这两个数的商successNumber/count就是所求的概率。
计算结果为:
总次数: 10000000, 成功次数: 26544, 概率: 0.0026544
程序可以如下实现:
#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("总次数: %d, 成功次数: %d, 概率: %.7lf\n", count, successNumber, p);
}
计算机里的取随机数函数是均匀分布的随机数。
0.0005的概率,相当于2000个数里取一个。
所以我们可以
在0到1999范围里取随机数,如果取到数值
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个
{
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
");
};
}
现成的函数没有,可以通过产生随机数实现概率。
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;
}
这段代码中,执行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为总次数,i1~i6为数字1~6出现的次数累加
float p1,p2,p3,p4,p5,p6;
//数字1~6出现的概率
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;
}
其实这题用数组就简单多了。
随机生成一个数倒是可以,概率的话,直接用1除以生成的数就可以了
没有的
C语言是属于中级语言
而且不是面向数学计算的语言
不过对于这种功能的函数是可以用C语言自己写出来的