挑战概率题:冰箱 1 有 30 瓶可乐,冰箱 2 里有 31 瓶, 60 天随机拿走 1 瓶.. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WinG
V2EX    问与答

挑战概率题:冰箱 1 有 30 瓶可乐,冰箱 2 里有 31 瓶, 60 天随机拿走 1 瓶..

  •  3
     
  •   WinG 2020-07-15 10:45:05 +08:00 6464 次点击
    这是一个创建于 1916 天前的主题,其中的信息可能已经有所发展或是发生改变。
    冰箱 1 有 30 瓶可乐,冰箱 2 里有 31 瓶,60 天内随机在 1 、2 中拿走 1 瓶..,

    60 天后冰箱 2 刚好剩下 1 瓶的概率是多少?

    据说答错的人极多。
    第 1 条附言    2020-07-15 11:23:12 +08:00
    一个冰箱拿空了再拿另一个冰箱
    第 2 条附言    2020-07-15 11:36:20 +08:00
    不用暴力模拟法,这个概率怎么算?
    第 3 条附言    2020-07-15 13:16:40 +08:00
    最多人错的是:1/2 和 31/61

    正确答案:#36 、#40 、#54 楼

    结帖。
    twor2
        1
    twor2  
       2020-07-15 10:47:28 +08:00   1
    请搜索 app 作业帮
    binux
        2
    binux  
       2020-07-15 10:57:36 +08:00   9
    概率是 0,60 天后冰箱 2 里最少有 30 瓶。
    Raven316
        3
    Raven316  
       2020-07-15 10:58:11 +08:00
    31/61 吗
    Isight
        4
    Isight  
       2020-07-15 11:01:30 +08:00
    概率主要看冰箱 1 和 2 的位置还有主人的懒惰程度
    dolphintwo
        5
    dolphintwo  
       2020-07-15 11:04:35 +08:00
    31/61 +1,不要想复杂
    imdong
        6
    imdong  
       2020-07-15 11:12:49 +08:00
    打算写代码实现,发现无法解决这个问题。

    因为如果真随机,冰箱的饮料会变成负数。

    所以,必然会出现,某个冰箱先拿空,然后要不要换个冰箱拿的情况。
    FlyPuff
        7
    FlyPuff  
       2020-07-15 11:13:00 +08:00
    请问 60 天后此人体重增加多少~
    chairuosen
        8
    chairuosen  
       2020-07-15 11:14:07 +08:00
    感觉这个问题并不简单。先不要想 30,31 。问题基本等于抛 60 次硬币,正反各 30 次的概率。
    这个问题知乎有问 https://www.zhihu.com/question/362403666/answer/956630635
    duwan
        9
    duwan  
       2020-07-15 11:14:33 +08:00   1
    用代码模拟了一下 0.55 左右
    Vegetable
        10
    Vegetable  
       2020-07-15 11:18:06 +08:00   1
    61 瓶可乐,拿走 60 瓶。剩下的可能是任意一瓶,每一瓶剩下的概率都是 1/61,剩在 2 的概率是 1*31/61
    Vegetable
        11
    Vegetable  
       2020-07-15 11:19:17 +08:00   1
    箱子里有红色球 30 个,蓝色球 31 个,随机从其中拿出 60 个,剩下的球是蓝色的概率是多少?
    Raven316
        12
    Raven316  
       2020-07-15 11:21:47 +08:00   1
    @chairuosen 不完全一样,一个冰箱拿空以后就必须拿另一个了
    WinG
        13
    WinG  
    OP
       2020-07-15 11:2359 +08:00 via Android
    @imdong 对,不是负,一个冰箱拿空了再拿另一个冰箱
    imdong
        14
    imdong  
       2020-07-15 11:24:06 +08:00   1
    不用算了,这是 “脑筋急转弯”,2 楼正解

    这是 60 天内 随机 拿走一瓶。
    不是 60 天内 每天随机 拿走一瓶。

    所以冰箱 2 最少还有 30 瓶。

    所以概率 0 。
    WinG
        15
    WinG  
    OP
       2020-07-15 11:24:36 +08:00 via Android
    @duwan 我也是这个结果
    WinG
        16
    WinG  
    OP
       2020-07-15 11:25:33 +08:00 via Android
    @imdong 是第二个意思,我表达不严谨
    WinG
        17
    WinG  
    OP
       2020-07-15 11:26:21 +08:00 via Android
    @binux 是每天拿一瓶,怪我表达不严谨
    lang1pal
        18
    lang1pal  
       2020-07-15 11:31:23 +08:00
    反过来想就是 60 天内把冰箱 1 拿空的概率是多少
    across
        19
    across  
       2020-07-15 11:31:51 +08:00   1
    是 50%吧。61 瓶排列组合,最后一个属于 2 号的比例
    imdong
        20
    imdong  
       2020-07-15 11:32:58 +08:00   1


    经过代码测试,一千万次,剩余一瓶次数:5512370,第二次:5513145 。

    55.12%,接下来,只需要找到一个合适的概念范围即可。

    我支持
    LemonButSweet
        21
    LemonButSweet  
       2020-07-15 11:33:38 +08:00
    不应该是二分之一吗....选冰箱的问题?
    across
        22
    across  
       2020-07-15 11:34:16 +08:00
    哦,错了,61 瓶排列组合,最后一个属于 2 号的比例是 31/61
    WinG
        23
    WinG  
    OP
       2020-07-15 11:38:30 +08:00 via Android
    @imdong
    @duwan

    我模拟的也是 0.55 ,不用暴力模拟法,这个概率怎么算?
    119
        24
    119  
       2020-07-15 11:39:18 +08:00
    应该是 1/2,前 59 次不影响结果,最后一次可能为 2:0 、1:1 、0:2,结果为 0+1/3*1/2*1/3
    Banxiaozhuan
        25
    Banxiaozhuan  
       2020-07-15 11:40:09 +08:00
    (0.5) ^ 30
    Vegetable
        26
    Vegetable  
       2020-07-15 11:42:12 +08:00   1
    关于程序模拟 0.55 的问题,0.55 对应的是随机选择一个冰箱,1 个冰箱 1 瓶,一个冰箱 2 瓶时,选择他们的可能性相等。而 31/61 考虑的不是冰箱,而是直接拿可乐。
    chairuosen
        27
    chairuosen  
       2020-07-15 11:45:07 +08:00   1
    @WinG #23 你如果用 20L 的算法,就是冰箱取空后不换成取另一个冰箱的可乐。则就是我 8L 说的问题
    tr>
    jinhan13789991
        28
    jinhan13789991  
       2020-07-15 11:45:29 +08:00
    是 1/2 啊,要么 “冰箱 2 刚好剩下 1 瓶” 要么 “冰箱 2 刚好剩下不是 1 瓶”
    /dog
    nuk
        29
    nuk  
       2020-07-15 11:51:44 +08:00
    这个很好计算啊
    按照 11 楼的题目来计算
    概率就是 C(30,60)/C(30,61)
    实际上就是 31/61
    hahastudio
        30
    hahastudio  
       2020-07-15 11:55:58 +08:00   3
    我是这么想的:既然其中一个冰箱拿空了就必然会去拿另一个冰箱,那就是怎么这 61 瓶可乐按什么顺序拿的问题
    全排列 61!
    固定第二个冰箱里的某一瓶最后拿,其余 60 瓶的排列 60!
    第二个冰箱有 31 瓶
    那就是 60! * 31 / 61! = 31/61
    hahastudio
        31
    hahastudio  
       2020-07-15 11:58:05 +08:00   1
    这样的话,好像等价的问题更好理解:
    61 瓶可乐,30 瓶普通的,31 瓶无糖的,随机拿 60 瓶,最后一瓶是无糖的概率 31/61
    hicdn
        32
    hicdn  
       2020-07-15 12:00:25 +08:00
    等价转换,箱子里有 30 各红球,31 个白球,每次取一个球。求取 60 次后,箱子里剩一个白球的概率。
    wxd92
        33
    wxd92  
       2020-07-15 12:03:01 +08:00 via iPhone
    我来
    C(30,31)C(30,30)/C(60,61)
    总事件 从 61 个瓶取 60 个
    该事件 冰箱 1 30 个全取,冰箱 2 31 个中取 30 个
    hicdn
        34
    hicdn  
       2020-07-15 12:07:25 +08:00
    @hicdn C(30,30)C(30,31)/C(60,61) = 31/61
    td width="auto" valign="top" align="left">
        35
    nmdx  
       2020-07-15 12:08:27 +08:00 via Android   1
    相当于一次性拿 60 瓶,最后剩 1 瓶,那么这 1 瓶是 2 号冰箱的概率就是 31/61 了

    也可以换个角度,一开始先随机拿出来一瓶,后面 60 天随便怎么拿,保证第一瓶是 2 号冰箱的就行,概率为 31/61

    个人意见,仅供参考
    nmdx
    SakuraSa
        36
    SakuraSa  
       2020-07-15 12:22:03 +08:00   6
    A 冰箱有 a 瓶,B 冰箱有 b 屏,在 A 、B 冰箱中有可乐的冰箱中等概率取一瓶,最后 B 冰箱剩余 1 瓶的概率。

    解:
    设目标概率函数为: P(a, b)
    由题目理解可得:

    1. 当 a>0, b>0 时:
    P(a, b) = 0.5 * P(a - 1, b) + 0.5 * P(a, b - 1)
    2. 当 a=0 或 b=0 时:
    P(a, 0) = 0
    P(0, b) = 1

    题目可由动态规划得:

    ```python

    import functools.lru_cache

    @lru_cache
    def p(a, b):
    if a and b:
    return 0.5 * p(a - 1, b) + 0.5 * p(a, b - 1)
    else:
    return 1 if b else 0
    ```

    时间复杂度 O(a*b)
    空间复杂度 O(a*b)

    本机运行结果:
    ```
    >> timeit p(30, 31)

    0.5512890865042848
    578 s ± 11.4 s per loop (mean ± std. dev. of 7 runs, 1000 loops each)
    ```

    另外:31/61 = 0.5081967213114754
    WinG
        37
    WinG  
    OP
       2020-07-15 12:23:52 +08:00 via Android
    @SakuraSa 牛逼!
    gtchan13579
        38
    gtchan13579  
       2020-07-15 12:27:17 +08:00
    最终只有两种结果,要么冰箱 1 剩一瓶,要么冰箱 2 剩一瓶,所以答案 1/2.模拟的是什么鬼,这么简单还需要模拟吗。
    WinG
        39
    WinG  
    OP
       2020-07-15 12:28:36 +08:00 via Android
    @gtchan13579 二分一是最典型的错误答案
    cigarzh
        40
    cigarzh  
       2020-07-15 12:30:09 +08:00   2
    ez

    https://www.wolframalpha.com/input/?i=Sum[(60!/((60-i)!*i!)),{i,0,30}]/2^60
    chairuosen
        41
    chairuosen  
       2020-07-15 12:30:52 +08:00
    @gtchan13579 #38 你去面试,要么过要么挂,那么你过的概率就是 50%了?
    kop1989
        43
    kop1989  
       2020-07-15 12:34:48 +08:00
    如果一个冰箱拿空就拿另外一个的话:
    答案是 30 天 a,30 天 b 的概率+31 天 a,29 天 b 的概率 + ... + 60 天 a 的概率之和。
    不知道这算不算暴力法。
    301
        44
    301  
       2020-07-15 12:38:50 +08:00 via Android
    @across #19 赞同 1/2,相当于 30 个 A 和 31 个 B 排序,最后一个是 B 的概率,为 1/2
    LZSZ
        45
    LZSZ  
       2020-07-15 12:40:21 +08:00
    你们大小月都不算的吗
    301
        46
    301  
       2020-07-15 12:41:09 +08:00 via Android
    等等,计算有误,确实是 31/61
    shuaizi
        47
    shuaizi  
       2020-07-15 12:45:34 +08:00
    31/61,
    因为随机拿,每一瓶被剩下的概率都是 1/61,
    剩下的一瓶在第二个冰箱里有 31 种可能
    Xs0ul
        48
    Xs0ul  
       2020-07-15 12:46:52 +08:00   4
    等价的问题是,扔 60 次硬币,正面小于等于 30 次的概率,是二项分布的累加和

    具体结楼上已经用 wolfram alpha 算出来了
    cigarzh
        49
    cigarzh  
       2020-07-15 12:50:33 +08:00   3
    解释:

    每天起床抛一枚理想硬币,记录下结果但不去拿可乐(正面冰 1,反面冰 2 )

    到第 60 天晚上按照结果一一拿取可乐。

    则,只要反面的记录小于等于 30 次,明天的最后一瓶必在冰 2 中
    chris31326
        50
    chris31326  
       2020-07-15 12:51:39 +08:00
    0
    60 天内只拿了 1 瓶
    Xs0ul
        51
    Xs0ul  
       2020-07-15 12:54:19 +08:00   1
    验证很简单,把数字改小就好了,改成冰箱 1 有 1 瓶,冰箱 2 有 2 瓶,拿两天

    按照 31/61 的做法,结果应该是 1/3

    实际直接暴力解,概率是第一天拿抽冰箱 1 有 1/2,第一天抽到冰箱 2 并且第二天抽到冰箱 1 是 1/4,合计 3/4

    而 3/4 就是 n=2,p=0.5 的二项分布的累加和
    Xs0ul
        52
    Xs0ul  
       2020-07-15 12:55:00 +08:00   1
    @Xs0ul #51 修正 1/3 -> 2/3
    jklzhu
        53
    jklzhu  
       2020-07-15 12:57:30 +08:00 via iPhone
    二分之一,只需要考虑最后两个瓶
    sixg0d
        54
    sixg0d  
       2020-07-15 13:05:19 +08:00   4
    31/61 是错的。
    转换成摸双色球是不等价的。随机事件都被改了:(在不考虑为空的情况下)原题概率分别为 0.5,而双色球概率是按球数分配。
    转换成排列组合的序列时,的确最后剩下编号 2 的序列占 b/(a+b),但问题在于每个序列并不是等概率的,问题出在一个冰箱为空后之后以概率 1 为摸另一冰箱,造成序列的权重不一样。一个简单的反例考虑 n 个编号 1,1 个编号 2 ;要想剩下编号 2,只能一直以 0.5 的概率选编号 1,最后的概率是 0.5^n 而不是 1/(n+1)
    36 楼 @SakuraSa 提供的递推式是正确的解法(之一)。
    dilu
        55
    dilu      2020-07-15 13:17:32 +08:00
    我的理解是一天就拿一瓶 拿空一个冰箱之前,不能从另外一个冰箱拿

    那第一次拿就决定了最后一瓶出现在哪个冰箱

    如果说随机的话,拿第一瓶的概率就是 1/2 怎么就能搞得这么复杂了
    dilu
        56
    dilu  
       2020-07-15 13:21:47 +08:00
    @chairuosen #41 你去面试,要么过要么挂,那么你过的概率就是 50%了?

    但是有前提条件,两个人来面试,你必须录取一个人,针对某个人被录用的概率就是 1/2

    lz 的题目里面说了 必须要拿一瓶的
    gtchan13579
        57
    gtchan13579  
       2020-07-15 13:47:00 +08:00
    @WinG

    我觉得这个问题如果站在上帝视角,那么答案就是你认为的 0.55 以及那种算法,但对于拿可乐的人来说一切条件对于他来说一共有多少瓶可乐,每个冰箱有几瓶,他都不关心, 他只关心今天我要从哪个冰箱拿一瓶,以及万一拿空了那我就从另一个冰箱拿了,所以后面 30 瓶可乐他压根不去考虑选择哪个冰箱。所以就是 30/60=1/2,这是从另一种角度来解释为什么是 1/2.

    @chairuosen
    gtchan13579
        58
    gtchan13579  
       2020-07-15 13:54:22 +08:00
    @gtchan13579 修正一下 57 楼的的说法。
    我觉得这个问题如果站在上帝视角,那么答案就是 0.55 以及那种算法,但对于拿可乐的人来说一切条件对于他来说一共有多少瓶可乐,每个冰箱有几瓶,他都不关心或者不知道, 他只关心今天我要从哪个冰箱拿一瓶,以及万一拿空了那我就从另一个冰箱拿了,所以感觉拿可乐=价于选冰箱了,拿光一个冰箱的可乐之后,冰箱 2 最终剩不剩可乐就是必然事件了,所以我站 1/2.
    oaix
        59
    oaix  
       2020-07-15 14:33:02 +08:00   1
    Raven316
        60
    Raven316  
       2020-07-15 15:52:20 +08:00
    题目都没表达清楚啊:到底是随便从 2 个冰箱里拿可乐,还是先等概率选冰箱再拿可乐,说不清楚题意,答案怎么可能正确
    talen666
        61
    talen666  
       2020-07-15 15:53:05 +08:00
    如果改成一个冰箱里有 30 瓶可乐,31 瓶雪碧,最后剩下雪碧的概率是 31/61 吧
    mcfog
        62
    mcfog  
       2020-07-15 16:15:33 +08:00 via Android
    绝大多数有争议的概率题其实都是语文问题
    a4854857
        63
    a4854857  
       2020-07-15 16:40:39 +08:00
    诶.这帮人天天做噩梦说梦回高考
    结果毕业了一问高中概率题答的比谁都积极
    xuewuchen
        64
    xuewuchen  
       2020-07-15 16:48:53 +08:00
    嗨,这不是人说了算吗?剩最后三瓶的时候,就看我心情想剩几瓶了
    Alexhex
        65
    Alexhex  
       2020-07-15 16:56:49 +08:00
    同意,题目有歧义。36 楼的解法是有问题的,单看某一天,从 2 号冰箱取可乐的概率到底是 1/2 还是 31/61,是完全不一样的。“60 天内随机在 1 、2 中拿走 1 瓶”怎么看都是 1/2 的理解。

    如果是 1/2,假设 B 冰箱里只有 30 瓶,问 60 天取空 B 冰箱的概率是多少,和 60 天后剩一瓶的概率没有差别。
    wyz123723
        66
    wyz123723  
       2020-07-15 17:18:31 +08:00
    出这题目的语文不及格,如果按照题意, 确实是 0
    BlackwithBrown
        67
    BlackwithBrown  
       2020-07-15 17:21:44 +08:00
    其实题目的意思是 60 天内 30 天拿 1 的概率吧,计算机算为 0.55 左右
    YUCOAT
        68
    YUCOAT  
       2020-07-15 17:26:51 +08:00
    我觉得答案还是 31/61

    我觉得楼主的问题与下面这个问题是等价的:
    所有可乐瓶的身上都标记一下自己属于哪个冰箱,然后把这 61 瓶可乐放一起,随机取走 60 瓶,然后检查最后一瓶可乐的瓶身,瓶可乐属于冰箱 2 的概率是多少。
    wyz123723
        69
    wyz123723  
       2020-07-15 17:30:00 +08:00
    一个冰箱拿空再拿另一个冰箱什么意思?如果我随机到第一个冰箱那我之后只能拿第一个冰箱的?那概率不是 30/61 吗
    YUCOAT
        70
    YUCOAT  
       2020-07-15 17:37:26 +08:00
    或者我们换一个思路,一共 61 瓶可乐,其中的 60 瓶都会被取走,我们把最后没有被取走的那一瓶称为“幸运儿”。
    现在题目相当于在问“幸运儿”是属于冰箱 2 的概率。

    假设是随机取,那么这 61 瓶可乐,每瓶能成为幸运儿的概率必然是一样的。
    既然如此,那么幸运儿的概率属于冰箱 2 的概率就是 31/61
    yiran0
        71
    yiran0  
       2020-07-15 17:42:22 +08:00
    如果在浙江,1818 黄金眼考虑一下?!
    Meltdown
        72
    Meltdown  
       2020-07-15 19:35:15 +08:00 via Android
    题目有歧义吧,选的时候是每瓶等概率还是每个冰箱有概率没说清楚
    ruokw
        73
    ruokw  
       2020-07-15 20:20:03 +08:00 via Android
    这里面有点问题,比方说 36 楼的 1/2 系数的概率,意味着某一冰箱空之前还需要选择冰箱,为啥当一个空了之后就不需要选择冰箱。对于 31/61 的应该是说明对冰箱不做选择,即 60 天每次一定选一个出来,不管从那个。最简单是说 a 有 1 个 b 有 2 个。现在算算概率。我自己还是觉得 31/61 的最靠谱。
    oshio
        74
    oshio  
       2020-07-15 22:00:55 +08:00   2
    @YUCOAT 不等价的。楼主的问题里面,哪怕 1 号冰箱只剩一下 1 瓶,2 号还有 31 瓶,下一次取到 1 号冰箱可乐的概率依然是 1/2,而不是 1/32 。
    plko345
        75
    plko345  
       2020-07-16 00:21:21 +08:00
    额, 最近 ronnie 也在他频道里讲了这个题
    Harry1993
        76
    Harry1993  
       2020-07-16 00:54:57 +08:00
    C(60, 30) / C(61, 30) = 31/61
    wuqingdzx
        77
    wuqingdzx  
       2020-07-16 09:24:46 +08:00
    请多些这样的问题
    bluepikachu
        78
    bluepikachu  
       2020-07-16 10:42:14 +08:00
    @plko345 有关键字指路吗,想去看看
    plko345
        79
    plko345  
       2020-07-16 21:59:33 +08:00
    @bluepikachu 频道叫 "Better Women", 应该是两天前的一个视频
    bluepikachu
        80
    bluepikachu  
       2020-07-16 22:35:58 +08:00
    @plko345 好的,感谢。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2718 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 15:16 PVG 23:16 LAX 08:16 JFK 11:16
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86