美文网首页程序员
一个有趣的问题——赌场是否稳赢不陪?

一个有趣的问题——赌场是否稳赢不陪?

作者: JBD | 来源:发表于2017-07-06 22:29 被阅读190次

    假设赌场拥有无限资金,赌场里面有一台抛硬币机供赌徒赌博,如果抛硬币机抛到了正面,那么赌徒赢,否则赌场赢。赌场为了防止一次性被赌徒全部赢光所有资产,限制每次赌博的金额为一元。

    问题:假设赌徒只有一元钱,赌徒能进行 N 次赌博的概率为多少?

    分析:
    根据上述问题,我画了一个图,如下所示:

    图示.png

    设赌徒用 x 元开始和赌场对赌,能玩到第 y 次还能继续玩下去的可能次数为 f(x, y),对应的概率为 P(x, y)。那么我们可以得到如下公式:

    f(x, y) = f(x - 1, y -1) + f(x + 1, y - 1)
    P(x, y) = f(x, y) / (2 ^ x)

    找到了计算公式,便可以根据计算公式编写代码进行计算了,问题解决。代码如下:

            final int count = 1000;
            BigDecimal[][] table = new BigDecimal[count][count];
    
            for (int i = 0; i < count; i++) {
                table[0][i] = BigDecimal.ONE;
                table[i][0] = BigDecimal.ZERO;
            }
    
            for (int i = 1; i < count; i++) {
                for (int j = 1; j < count - i; j++) {
                        BigDecimal num = table[i - 1][j - 1].add(table[i - 1][j + 1]);
                        table[i][j] = num;
                }
            }
    
            for (int i = 1; i < count - 1; i++) {
                System.out.println(table[i][1].divide(BigDecimal.valueOf(Math.pow(2, i)), 5, BigDecimal.ROUND_HALF_DOWN));
            }
    

    最终,我模拟到了1000 次对赌的概率,为了方便展示,我把这些数据贴到了 Excel 表格制作了一张折线图。如下所示:

    赌徒对赌次数概率图示

    结论:
    根据上图所示,我们能够十分直观的看到,随着赌博次数的增加,赌徒能继续玩下去的概率是趋向 0 % 的(代码最多模拟到了 1000 次,概率为 2.5%。因为第 N 次对赌可能结果呈现指数级增长,在 1024 次的时候,其数值超出了 double 的最大范围,使用 double 实在无法模拟下去了。)。
    所以我们可以得出一个结论,如果赌场拥有无限资金,随着赌博次数的增加,赌徒还能继续玩下去的概率趋向 0%。换句话说,赌徒战胜赌场的概率几乎为 0%,赌徒输给赌场的概率几乎 100%。

    如果有错误,欢迎指正!

    相关文章

      网友评论

        本文标题:一个有趣的问题——赌场是否稳赢不陪?

        本文链接:https://www.haomeiwen.com/subject/hzekhxtx.html