初始积分为0, 每次比赛有50%的概率胜利或者失败, 如果胜利, 积分加1, 如果失败则积分减一(积分为0则不减).
问要使得积分到达5, 需要比赛的次数的数学期望是多少?
假设积分为x需要的场数的数学期望, 用f(x)表示,
所求是 f(5) = ?
显然 f(0) = 0
由于胜率为50%,所以
f(1) = 1.0/0.5 = 2
当已经积分x, 要积分x+1, 则需要再比赛一场, 有50%概率胜利, 另外50%会回到x-1
所以
f(x+1) = f(x)+1 + (f(x+1) - f(x-1)) * 0.5
得到:
f(x+1) = 2*f(x)-f(x-1) + 2
f(x+1) - f(x) = f(x)-f(x-1)+2
f(x)=f(x-1)+2*x
f(x) = x*(x+1)
所以
f(5) = 30
验证用的js程序片段:
function randtimes(N){
var total = 0;
var times = 0;
while(total < N){
times++;
var r = Math.random();
if(r < 0.5){
total ++;
} else if(total > 0){
total--;
}
}
return times;
}
function avg(M, N){
var totaltimes = 0;
for(var i=0; i<N; i++){
totaltimes += randtimes(M);
}
return totaltimes/N;
}
console.log("N=" + avg(5, 1000));