导航:首页 > 源码编译 > c语言算法概率计算

c语言算法概率计算

发布时间:2022-07-03 04:37:21

Ⅰ 用C语言编写一个程序,求掷硬币1000次,至少有一次连续出现10次正面的概率。或者讲讲算法

有两种办法:
第一种就是用随机数进行模拟,然后进行至少100轮的模拟,取平均数
第二种就是用公式,根据概率学进行公式推导,然后使用C语言进行计算。
第一种并不能很准确,但是有说服力,模拟轮数越多越趋向于准确
第二种准确并有说服力,但是需要理论支持去计算。
公式的话:
全部可能出现的排列,是2的1000次方
特定位置可能出现满足的排列,比如前10个都是正面,剩下的随便排列,就是2的990次方
特定位置数,一共是991个
所以,几率就是:991 * 2^990 / 2^1000
(好久没有算过了,可能不太对,但是思路差不多,你好好想想吧)
因为,前11个都是正面的,同时满足第一个和第二个位置的,是重复,需要排除一个,所以还需要额外考虑排除,需要进行处理一下……实际比上述的几率小,具体公式仍需推导……非专业人员帮不到你

Ⅱ c语言 求随机数分布概率

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<stddef.h>

intmain(){
floata,sum;

inti,j,n,m;

//100次求0-1之间的随机数之和在0-11-2之间的概率分布次数
for(i=0;i<100;i++){
srand(time(NULL));
for(j=0;j<10;j++){
a=(float)rand()/RAND_MAX;
sum+=a;
}
if(sum>=0&&sum<=1)
n++;
}
if(sum>1&&sum<=2){
m++;
}
}

printf("01=%d12=%d ",n,m);

return0;
}

Ⅲ 如何用C语言实现求概率期望

用一个数组存放这100个概率。然后随机生成N个0~99的数。以随机生成的数为下标读取数组里的数。然后相乘。。

Ⅳ C语言 随机数 概率

计算机里的取随机数函数是均匀分布的随机数。
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;i<5000;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
");
};
}

Ⅳ C语言中如何表示概率

现成的函数没有,可以通过产生随机数实现概率。
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
希望可以帮到你

Ⅵ c语言概率法求圆周率

#include<stdio.h>
#include<stdlib.h>
intmain()
{doublex,y;
intm=0,n=10000000,i;
srand(time(0));
for(i=0;i<n;i++)
{x=(double)rand()/RAND_MAX;
y=(double)rand()/RAND_MAX;
if(x*x+y*y<1)m++;
}
printf("%lf ",4.0*m/n);
return0;
}

Ⅶ c语言求概率

这是典型的古典概型,直接用穷举法计算即可。
计算思路是遍历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);
}

Ⅷ n个人生日完全不同的概率的算法 C语言

}
void guoling()interrupt 0 using 1
{
led=!led;
led1=0;
henwen=0;
TR0=1;
}
void toser()interrupt 1 using 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
henwen=1;
led1=1;
led=0;
TR0=0;
}

Ⅸ 如何用c语言随机生成一个概率

随机生成一个数倒是可以,概率的话,直接用1除以生成的数就可以了

Ⅹ 【C语言】关于概率计算的方法

我想是因为for (i=1;b>=1;i++)这一句无效。

前面b=0,循环条件是b>=1,所以不循环的。

另外b=b+0.1*pow(0.9,i-1);这句的0.1后面应该加上f,否则类型不对。

这个是改动过的代码

#include <stdio.h>

#include <math.h>

int main()

{

int i;

long double b;

b=0;

for (i=1;b<=1;i++)

{

b=b+0.1f*pow(0.9,i-1);

}

printf("%d ", i);

return 0;

}

时间有些晚了,答题有点仓促,不知道能不能行,如果出现问题,希望海涵。

阅读全文

与c语言算法概率计算相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:581
python员工信息登记表 浏览:377
高中美术pdf 浏览:161
java实现排列 浏览:513
javavector的用法 浏览:982
osi实现加密的三层 浏览:233
大众宝来原厂中控如何安装app 浏览:916
linux内核根文件系统 浏览:243
3d的命令面板不见了 浏览:526
武汉理工大学服务器ip地址 浏览:149
亚马逊云服务器登录 浏览:525
安卓手机如何进行文件处理 浏览:71
mysql执行系统命令 浏览:930
php支持curlhttps 浏览:143
新预算法责任 浏览:444
服务器如何处理5万人同时在线 浏览:251
哈夫曼编码数据压缩 浏览:428
锁定服务器是什么意思 浏览:385
场景检测算法 浏览:617
解压手机软件触屏 浏览:352