投硬币问题

某人投硬币,抛出正面时可以前进一米,抛出背面必须后退2米,问他最终能够返回原点的概率。

 简单,假设经过n步返回原点,那么假设共后退了k次,那么前进了2k次.
所以n=3k,概率为C(3k,k)*(1/2)^(3k)
其中n=3时返回原点概率为C(3,1)/8=3/8
 n=6时返回概率为C(6,2)/64=15/64
 ...
 其中
 n=3k时返回的概率为P(k)=C(3k,k)/8^k
但是对于n=3k时的情况,其中还包含了n=3已经返回,然后后面3k-3步又重复返回的情况.
 所以我们可以即第一次返回原点是在第3k步的概率为Q(k)
 那么P(k)=Q(1)*P(k-1)+Q(2)*P(k-2)+...+Q(k-1)*P(1)+Q(k)*P(0),
 其中P(0)=1,这样,我们就可以解出Q(1),Q(2),....
而最终的概率是Q(1)+Q(2)+.... 
 

最终概率挺大,大概在0.572949

#include <stdio.h>
#define MAX 100
double limit=0.0;
double P[MAX], Q[MAX];
int main(){
 int i;
 P[0]=1.0;
 for(i=1;i<MAX;i++){
 double f=3*i;
 double mul=1.0;
 int j;
 for(j=1;j<=i;j++){
 mul*=f;mul/=j;
 mul/=8.0;
 f-=1.0;
 }
 P[i]=mul;
 for(j=1;j<i;j++){
 mul-=Q[j]*P[i-j];
 }
 Q[i]=mul;
 limit+=Q[i];
 printf("P[%d]=%f,Q[%d]=%f,Sum=%f/n",i,P[i],i,Q[i],limit);
 }

 26楼的答案即(9-3√5)/4
花了一点时间凑 
 
 记w为方程x^2+x-1=0的正根,也就是黄金分割.
那么结果就是
3/2*(1-w)=(9-3*sqrt(5))/4
我们记起点不是在原点,而是离原点为k的位置,最终能够到达原点的概率为x(k) (前面k为正,后面k为负)
对于k<0,
我们显然知道x(-2)=x(-1)^2, x(-3)=x(-1)^3, ..., x(-k)=x(-1)^k
而x(-1)=(1+x(-3))/2
可以得到x(-1)=w
然后对于k>=3,我们有
x(k)=(x(k-2)+x(k+1))/2
这个数列有通项公式
x(n)=a+b*(-w)^n+c(1/w)^n (n>=1)
由于1/w>1,数列x(n)有界( 0<=x(n)<=1)
所以c=0
我们还知道
x(1)=(x(-1)+x(2))/2=(w+x(2))/2
x(2)=(1 + x(3))/2
将通项公式代入,可以得到
a=3w-1, b=2-3w
所以x(1)=2-2w
而x(0)=(x(-2)+x(1))/2=(w^2+2-2w)/2=(3-3w)/2=3/2 *(1-w) 
 
 i)可以换一个题目,比如每次以2/3的概率前进一米,1/3的概率后退两米,那么结果如何?
ii)如果每次以一半的概率前进两米,一半的概率后退三米,那么结果如何? 
 
 进二退三的情况,我试着借助计算机数值计算了一下,结果是:
u=-0.332923889620564 +0.670769076539605i
v=-0.332923889620564 -0.670769076539605i
y=+0.848374895731953
z=-0.660992531890120
a=0.80664191
b=0.09667904-2.805534e-02i
c=0.09667904-2.805534e-02i
d=0.85182850
e=0.14817150

x(n)=a+b*u^n+c*v^n (n>=1)
x(-n)=d*y^n+e*z^n (n>=1)


x(0)=0.5*(x(2)+x(-3))=0.596679 
 
 其中
u,v是方程x^5-2x^3+1=0的两个范数小于1的解
y,z是上面方程两个范数大于1的解的倒数(也就是方程x^5-2x^2+1=0两个范数小于1的解).
a,b,c,d,e是通过待定系数法利用x(5)--x(-5)的关系(去除x(0))来解出. 
 

升级版(v2.0):
某人离终点线距离为1米,此时他开始不停地投硬币,抛出正面时可以前进2米,抛出背面必须后退3米,问他最终能够达到终点线或超过终点线的概率.

升级版(v3.0):
A和B一开始站在同一个地方,他们不停地猜拳,A赢了就前进1米,B赢了就前进π(圆周率派)米(他们朝同一个方向前进)直到A前进到B的前面为止,求A走到B前面的概率. 


升级版v2.0很简单,可以参考上面德方法,

可以假设
x(n)=d*y^n+e*z^n
其中
y=+0.848374895731953 
z=-0.660992531890120
然后利用
x(0)=x(-1)=1,可以解出待定系数d,e
d=0.933599294821052
e=0.066400705178948
最终结果为
x(1)=d*y+z*e=0.748151834163713

升级版v3.0现在也解决了 ,在链接http://bbs.emath.ac.cn/thread-331-1-1.html中可以找到结果,不过结果没有解析表示,只有近似表示,结果在0.54364331210052407755147385529445和0.54364331210052407755147385529454之间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值