赌徒有10元,一次输赢1元,手头能到110元的概率

这是我前一些天看了算法导论,然后碰到的一个有意思的问题。

我保证这是本人原创的东西。


一道与赌博有关的概率问题 

假设甲有10元,乙有100元,他们丢一次硬币输赢1元。最后要么甲输光结束游戏,要么乙输光结束游戏。  
问题:  甲赢光乙结束游戏的可能性是多大? 
------------------------下面是解答--------------------------------


如果甲和乙一共有5张, 那么就会有以下关系。
赌徒有10元,一次输赢1元,手头能到110元的概率_第1张图片
下面的那个矩阵乘法有点挫(那个“X”表示矩阵乘法)不过,大概能表词达意。。。
解释一下,比如 A0 = 0 + A1/2 ,就是,如果甲有一张,乙有4张,那么如果是下一次硬币是甲猜对了,概率是1/2,结果就是A1/2,如果是乙对了(他们两个的答案必须不一样),那么概率是 1/2,对甲赢的贡献是0*1/2 = A0;
同理,如果甲有2张,乙有3张,那么如果下次甲猜对了,那么,概率是1/2,情况就变成了 甲有三张的情况(3:2)贡献是 1/2*A0, 不然如果甲输了,概率是1/2情况就变成了甲有一张的情况,贡献是 1/2*A2.
所以整体的概率就是A1 = A0/2 + A2 / 2...

所以甲有10张,乙有100张时,就是一样的啦,像上面表格那样表示,然后化成矩阵乘法,,,当然因为本题高度对称,感觉可以推出通项公式之类的。。
解答本题目时要注意这是个 三对角矩阵乘法 ,用算法导论第3版第28章的思考题28-1的东西来干这个很给力,时间复杂度是O(n+m) 其中n是甲的张数,m是乙的张数。

更加高级的解法

由于一共有5张时,求出来的A0,A1,A2,A3分别是 1/5, 2/5, 3/5, 4/5..
所以假定对于甲有A张,乙有B张,那么,甲赢的概率是 A/(A+B)。
然后考虑如果下一次甲输了,或者甲赢了,一共就是 A/(A+B) = (A-1)/(A+B)/2 + (A+1)/(A+B)/2 ...正好满足所有的约束,而且边界的两个约束也是满足的。。。
所以假设成立。。。
所以本题的答案是 10 / (10 + 100)      就是1/11
-------------------脑洞大开------------------

借债赌钱

如果这个赌徒能够借债赌钱,也就是即使手头没钱了也能接着赌钱,那么最后能够回本,而且还了债务后手头能够到110元的概率是多少。
(假设赌徒可以无限赌钱。而且可以无限借债,而且债没有利息和时间限制)。
这个其实概率几乎就是1,也就是一定可以。
这个其实就是下面久赌必输的原理。
比如因为可以借债,其实等价于我们可以想象成赌徒甲有10000元或者更多钱n,那么这个赢下有限钱的乙的概率是 n/(n+100).
由于n可以到达无限大,所以这个概率几乎就是1,也就是说乙一定有时候会输完。

久赌必输

如果你是乙,只有有限的100元,面对一个有几乎无限钱的甲,即使一次输赢只是一块钱,那么只要你坚持赌下去,几乎,你输完的结局是必定的。几乎100%的久赌必输定理就在这里。
当然百度上面还流传着另一个证明方法:
假设赌徒的初始资金是n,每赌一次或输或赢,资金分别变为n+1和n-1。求一直
  赌下去资金变为0的概率是多少?假设从n开始一直赌下去变为0的概率是T(n).
  那么我们有:
  T(0) = 1
  T(n) = ( T(n-1) + T(n+1) )/2, 对n > 0.
  这第二个式子相当于数n有一半机会变成n-1,一半机会变成n+1。

  那么变换一下相当于T(n+1) = 2T(n)-T(n-1)。

  设T(1)的值为a, 那么显然0< a<=1。利用T(n+1) = 2T(n)-T(n-1)
  T(1) = a
  T(2) = 2a - 1

  T(3) = 2(2a-1) - a = 3a - 2
  T(4) = 4a - 3
  ...
  T(n) = na - n + 1.
  我们知道T(n) >= 0对于任意的n成立。所以a必须为1.

  所以我们证明了T(1) = 1. 同样的过程可以得到T(2) = 1, ...,
  一直下去,T(n) = 1. 证毕
这是百度搜索“久赌必输”,然后出来的第一个百度知道的解答,回答者 凭栏看剑。大概意思差不多。


-------------------做后感-------------------
当时我做的时候还不知道什么是马尔可夫链,什么是随机游走,后来有人告诉了我,后来,我就去看了些马尔可夫的知识,隐马尔可夫模型之类的,后来我就去看机器学习的书,然后现在跟着做机器学习东西。



凭栏看剑  
凭栏看剑  

你可能感兴趣的:(重走算法导论)