作者:希望offer!=0 链接:https://www.nowcoder.com/discuss/234989?type=6 来源:牛客网 个人观点,欢迎讨论。 我们首先看第一次,所有偶数都是安全的,所有奇数位都有1/300的可能性被杀掉。 假设这里是杀掉的第2*k+1的位置,那么2k(包含2k)以前的数被杀情况和第一轮一样偶数不被杀,奇数被杀,2k+2(包含)以后的数被杀的情况刚好相反,偶数被杀,奇数不被杀。 那么一个偶数2*m在第n轮仍为偶数的可能性为前n-1次击杀发生在2m前有偶数次,为奇数的可能性为n-1次击杀发生在2m前有奇数次。反之得到奇数2*m+1在第n轮仍为奇数的可能性为n-1次击杀发生在2m+1前有奇数次,为偶数的可能性为发生在前为偶数次。 假设目前一共发生了n轮,马上开始n+1轮:(这里要注意,每2轮减少一个奇数。不是每一轮减少一个奇数。如果有600个数,有300个奇数,如果是599个数,仍然有300个奇数) 首先对前面回帖提出的2来计算一下概率,因为1永远是奇数,那么被击杀的概率为f(n,600)=1/300+299/300*1/300+299/300*299/300*1/299+....; 如果1在第一次死掉了,2变为1后,被击杀的概率为1/300*f(n-1,599); 如果1在第二次死掉了,2被击杀掉的概率为299/300*1/300*f(n-2,598); 以下类推。 我下面列举n从1到600变化,1和2被击杀的概率的变动情况:(计算机计算,可能有误差,第一行为1,第二行为2被击杀的概率。) 60 120 180 240 300 360 420  480 540 600 0.19 0.36 0.51 0.64 0.75 0.84 0.91 0.96 0.99 1.0 0.019 0.074 0.16 0.27 0.40 0.55 0.69 0.83 0.94 1.0 再针对上面回帖说的600进行一个概率说明: 如果已经进行了奇数轮,那么600会变成一个奇数,会有概率被杀。偶数轮则绝对不会。根据每两轮减少一个奇数值,那么第n轮,600被击杀的概率为: n为偶数:0 n为奇数:600在前面活着的概率*1/(300-n/2) 同样我们计算一下概率变动(这里取奇数的n,因为有很多四舍五入会丢失信息,299后采用三位): 59  119 179 239 299 359 419 479 539 599 0.10 0.20 0.30 0.40 0.497 0.597 0.697 0.797 0.897 0.997 个人观点:这里存活的概率是和击杀轮次有关,在轮次比较小的时候,倾向于选小的数字2,轮次比较大的时候,600活下来的概率会相对大一点。因为轮次大的时候,1死掉的可能性变的很大,导致了2死掉的可能性变大了。但是600是每隔两轮才有危险,到后期就有优势了。  
点赞 2

相关推荐

头像
点赞 评论 收藏
转发
牛客网
牛客企业服务