- 注册时间
- 2009-6-4
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 11289
- 在线时间
- 小时
|
发表于 2018-12-20 15:42:00
|
显示全部楼层
这个概率问题很有意思。我以前分析过,现将我的计算方法总结如下:
注意我理解楼主问题是,“中间不会出现连续4次以上全射中的概率是多少?”也就是问在100次射击中,对整数j(1≤j≤96),在j、j+1、j+2、j+3、j+4次射击中都不会全射中的概率(而不是第1-5次无一命中、第6-10次无一命中、……)。否则题目意义不大。
设连续射击k(1≤k≤100)次中,不会出现连续4次以上全射中的概率是A(k),按条件不难得出:
A(1)=1,a(2)=1,A(3)=1,A(4)=1,A(5)=1-0.6^5
A(k)的递推关系为:当5<k时
A(k)=0.4*A(k-1)+0.4*0.6*A(k-2)+0.4*0.6^2*A(k-3)+0.4*0.6^3*A(k-4)+0.4*0.6^4*A(k-4)
通过上式不断迭代求出需要的A(k),但k很大时,若不用编程或不采用大数计算器,很难正确求得正确结果。
下面想法找出一般计算公式求A(k):
上面方程的特征方程为x^5-0.4*x^4-0.4*0.6*x^3-0.4*0.6^2*x^2-0.4*0.6^3*x-0.4*0.6^4=0
此特征方程的五个根(近似)为:
x(1)= 0.9623083691506949166212055929538172566539997867760030480467724403
x(2)= - 0.38711620508151738556331326335356-0.25991027362730615787739261049269i
x(3)= - 0.38711620508151738556331326335356+0.25991027362730615787739261049269i
x(4)= 0.105962020506169927252710466876648+ 0.48636637872922435807617136922825i
x(5)= 0.105962020506169927252710466876648- 0.48636637872922435807617136922825i
则 A(k)=C(1)*x(1)^k+C(2)*x(2)^k+C(3)*x(3)^k+C(4)*x(4)^k+C(5)*x(5)^k
将A(1)=1,a(2)=1,A(3)=1,A(4)=1,A(5)=1-0.6^5代入上式,得系数C(i)(i=1,2,3)的近似解
C(1)= 1.1263561382167118697347515675811
C(2)=- 0.12758025003881332929113666272279- 0.094771950328737674874730845239327i
C(3)=- 0.12758025003881332929113666272279+ 0.094771950328737674874730845239327i
C(2)= 0.064402180930457394423760878932225+ 0.15118506614264270936054641980588i
C(3)= 0.064402180930457394423760878932225- 0.15118506614264270936054641980588i
所以 ,所要求的概率
A(100)= C(1)*x(1)^100+C(2)*x(2)^100+C(3)*x(3)^100+C(4)*x(4)^100+C(5)*x(5)^100
≈0.024160282888513560545318451519189
对于此类问题,(当k大到一定时候)一般计算第一项就有足够精度了:
A(100) ≈C(1)*x(1)^100 ≈0.024160282888513560545318451519166
有人可能不相信所要求的概率会那么小,我们可以从以下两方面验证所要求的概率就是那么小:
1.如果将单次射击的命中率改为0.5,结果是多小呢?
Mathe在本论坛分析过,按他的计算方法,不难计算出
当p=0.5时,不会出现连续4次以上全射中的概率≈0.159621(p=0.6时应更小)。
参见:https://bbs.emath.ac.cn/thread-667-1-1.html
2.按14#kastin方法,用蒙特卡洛模拟10万遍100次连续射击试验,得到概率为0.024。
Kastin的代码中r计算和计算要求不同,我改了一下:
matlab代码
- n = 10^5; % 模拟10^5遍
- I = rand(100,n)<=0.6; % 以0-1向量表示100次连续射击命中情况,命中概率为0.6
- L(1,10^5)=false;
- A=[L;I;L];
- J = A==0; % 标定未命中的序列
- k = diff(A)~=0;
- count = 0;
- for iter = 1:n
- r = max(find(A(:,iter)&[k(:,iter);false])-find(J(:,iter)&[k(:,iter);false])); % 最大连续不命中次数
- if r<5, count=count+1; end % 若不会出现连续4次以上全射中,频数加1
- end
- p = count/n;
- disp(['100次连续射击中间不会出现连续4次以上全射中的概率为:' num2str(p)])
复制代码
|
|