抽奖那些事

我曹嘞?你把那只狼儿给踩死嘞?

起因

话说前几天,我媳妇给我微信留言,是一道题

如果一件事成功率是1%,那反复100次至少成功1次的概率是多少?

我当时第一反应就是,使用列举法,真实环境去还原命题,想法是这样的

有个商家出售100个刮刮乐,只有一个一等奖,自行车一辆,那么中奖率就是1%,我买了100个刮刮乐,那么中奖率就是100%。

那么我得出的答案就是100%啦,但是,我这心里隐隐感觉不安,就去查询了答案,而答案却是63%。解题思路如下:

至少中奖一次的概率的反面是一次都没中,如果把所有情况想象成一个集合A(100%),那么
A = { 不中奖,中奖 },
中奖也是一个集合,
中奖 = { 中奖一次,中奖两次,中奖3次...,中奖100次 }
A = { 不中奖,{ 中奖一次,中奖两次,中奖3次...,中奖100次 } },
显然使用 100% - 不中奖概率更简单。

中奖率 = 100% - (99%)^100 = 63.39676587267709%

猜想

但是问题来了,明显我的举出的案例也符合题意啊,为什么会出现的这样的问题呢,我就咨询了大学同学,她说啊,这两个是不同的问题,刮刮乐是拿出不放回,而这个题是拿出再放回(独立实验),我一想,没错,我把这个问题忽视了。无颜见高中数学老师。

但是我隐隐感觉两个题目其实就是一个问题,只不过是题目的先决条件不一样,也就是环境不一样。

如果我把刮刮乐的案例延伸至独立实验的量级,得到的答案会不会就和件事案例(独立实验)一样的成功率呢?

大胆猜想,小心求证吗。

求证

首先,我要把刮刮乐的案例答案求出,如下:

有个商家出售 X 个刮刮乐,只有 X/100 个一等奖,自行车一辆,那么中奖率就是1%,我买了100个刮刮乐,那么中奖率是多少?

当X = 100时,
中奖率 = 100% - (99/100 * 98/99 * 97/98 * ... * 0/1) = 100%
当X = 200时,
中奖率 = 100% - (198/200 * 197/199 * 196/198 * ... * 99/101) = 75.1256%
当X = 500时,
中奖率 = 100% - (495/500 * 494/499 * 493/498 * ... * 396/401) = 67.3965%

为了演示更大的数值,我们以函数计算。

    function calc(total){
        let have = total/100,
            limit = 100,
            start = 1;
        for(let i = 0;i < limit;i ++){
            start *= (total - have) / total
            total--;
        }
        return `${(1-start) * 100}%`
    }

表格如下

刮刮乐总数 奖品数 中奖率 买多少 最终中奖概率
100 1 1% 100 100%
200 2 1% 100 75.1256281407035%
500 5 1% 100 67.39653982126597%
1000 10 1% 100 65.3072285207994%
100000 1000 1% 100 63.41507511953775%
10000000 100000 1% 100 63.39694888961026%
1000000000000 10000000000 1% 100 63.39676587450722%

可以对比下 刮刮乐总数为1000000000000 (万亿)次的最终中奖率独立实验

63.39676587450722%
63.39676587267709%

结果就不用多说了。

结论

设:∞ = 正无穷
有个商家出售 ∞ 个刮刮乐,只有 ∞/100 个一等奖,中奖率1%,买了100个刮刮乐,那么最终中奖率将为
独立实验结果:100% - (99%)^100

我们常见的福利彩票的概率算法和独立实验是一样算法,而不是刮刮乐,因为福利彩票是用户买完了彩票在摇号,自己想想吧。

- - 游戏中的抽奖 - -
大家应该都玩过游戏中的抽奖,游戏中的抽奖大致分为两类:
①有保底的抽奖 ②无保底的抽奖。
现在有抽奖转盘,抽到绝版皮肤的概率为1%。
如果是有保底抽奖,相当于每个人都有一个独立的奖池,皮肤就在你的独立奖池中,所以只要你抽够100次,那么就一定能拿到皮肤,和开篇说到的刮刮乐中自行车那个一样。(假设你运气够好,当你在抽够100次前就拿到皮肤,奖池是否重置就得看游戏公司的良心了。)
如果是没有保底的抽奖,那么就很坑了。这个就是独立实验了,抽一百次抽中概率就为63.4%,假设你土豪,抽两百次,那么概率就为 :
1 - (99/100)^200 = 86.6%
没有保底的中奖率1%,抽200次,抽中的概率才为 86.6%。哎。理性充值吧兄弟们。

补充

对于,如果一件事成功率是1%,那反复100次至少成功1次的概率是多少,我们使用的是反推方法得出结果,那如果我们用正推该如何解答呢?
改一下题

如果一件事成功率是1/5,那反复5次至少成功1次的概率是多少?

反推: 1 - (4/5)^5 = 67.232%
正推:
成功率 = ①只成功1次 + ②只成功2次 + ③只成功3次 + ④只成功4次 + ⑤只成功5次;

① C51 * ( 1/5 * 4/5 * 4/5 * 4/5 * 4/5) = 40.96%
② C52 * ( 1/5 * 1/5 * 4/5 * 4/5 * 4/5) = 20.48%
③ C53 * ( 1/5 * 1/5 * 1/5 * 4/5 * 4/5) = 5.12%
④ C54 * ( 1/5 * 1/5 * 1/5 * 1/5 * 4/5) = 0.64%
⑤ C55 * ( 1/5 * 1/5 * 1/5 * 1/5 * 1/5) = 0.032%

成功率 = 40.96% + 20.48% + 5.12% + 0.64% + 0.032% = 67.232%

A排列,排列顺序影响结果
C组合,排列顺序不影响结果

/*
    ** 有序排列
    ** arr为总项数,n为取几项
    ** 从arr.length个值中,拿出 n 项,有多少拿法
    ** type: true 为组合, false为 排列
    */
    var generateParenthesis = function (arr, n, type) {
        let res = [];
        arr = arr.join('');
        function h(ps) {
            if (ps.length === n) {
                res.push(ps);
                return;
            }
            let e = arr;
            for(let i =0,l = ps.length; i < l; i++){
                e = e.replace(ps[i],'');
            }
            for(let s = 0,l = e.length;s < l;s++){
                h(ps + e[s])
            }
        }
        h('');
        type && (res = [...new Set(res)])
        return res;
    };

我们以做5次只成功2次(C52)为例说明
绿色代表成功, 红色代表失败
C52 = 5 * 4 / 2 = 10 ,所以5次成功2次的事件会发生10次。

C52的组合全图

以此类推,就可得出最终结果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.《我爸爸》可以说是作者对所有父亲的献礼。这个爸爸是百变的,时而像大猩猩一样强壮,时而像河马一样快乐,时而是个舞...
    小怿老师阅读 809评论 0 0
  • 为什么从知识到能力会有一个界限?什么才是真正的真知?某些广告容易记住真的只是因为多投吗…… 经常听到有人感叹:“听...
    天悦刘洋阅读 439评论 0 1
  • 最近有一篇文章很火,一直在提倡所谓的职场“填坑力”,当然,拥有职场能力是越多越好,然而文章角度太片面,似乎只...
    沫沫卡奇阅读 1,819评论 2 3
  • 为了给你们展示我也是很拼。没错今天是我自己的眼睛,没有美瞳没有假睫毛甚至没画眼线,眼影也只用了最简单的单色。最后一...
    睿睿Dora阅读 108评论 0 0
  • 日期: 20180522 践行人员: JENNY 践行天数: 1/90 今日起床: 5:38 昨晚就寝: 11:0...
    miffygao阅读 88评论 0 0

友情链接更多精彩内容