有1,2,3,......无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____。
- 2
- 12/5
- 14/5
- 16/5
- 18/5
- 4
这个问题,很显然考察的是递归问题:
定义step(i,j)为第i号格子带第j号格子的期望值;
step(1,4)为从第一格跳到第四格的期望,要到第四格,则只能先到第二格(期望0.5*(step(1,2)+1))或者是第三格(期望0.5*(step(1,3)+1));其中1表示到达第2格或者第3个之后,跳到第4格还需要1步。
故有
step(1,4)=0.5*(step(1,2)+1)+0.5*(step(1,3)+1)=1+0.5*(step(1,2)+step(1,3))
同理有
step(1,3)=1+0.5*step(1,1)+0.5*step(1,2)
step(1,2)=1+0.5*step(1,1)+0.5*step(1,4)
step(1,1)=0
联立方程,得到
step(1,4)期望为18/5,选E。
也可以用计算机求概率,如:
/** * 项目名称: * 文件说明: * 主要特点: * 版本号:1.0 * 制作人:lcx * 创建时间:2015-8-25 **/ /** * @author lcx * */ public class PaceTest { static Random rand=new Random(); public static int pace() { return (int) (rand.nextDouble()*2+1); } public static void main(String[] args) { double sum=0; int times=10000;//实验10000次 for(int i=0;i<times;i++) { int index=1; int pace=0; while(index%4!=0) { index+=pace(); pace++; } sum+=pace; } System.out.println("期望值为: "+sum/times); } }
追问1,若本题是从2开始,则期望多少?
同样的方法:
step(2,4)=1+0.5*step(3,4)
step(2,3)=0.5+0.5*(1+step(2,1))
step(2,1)=1+0.5*step(2,3)+0.5*step(2,4)
step(2,2)=0
最终求出
step(2,4)=12/5
追问2,若本题是3的倍数就停止,则期望为多少?
同样方法计算,期望值为2。
本题归根到底是利用递归思想。类似的题目还有青蛙跳问题、摆瓷砖问题(编程之美)等。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-13 12:04:57