V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
WinG
V2EX  ›  问与答

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

  •  3
     
  •   WinG · 2020-07-15 10:45:05 +08:00 · 6037 次点击
    这是一个创建于 1594 天前的主题,其中的信息可能已经有所发展或是发生改变。
    冰箱 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:23:59 +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 ,不用暴力模拟法,这个概率怎么算?
    shiyidi
        24
    shiyidi  
       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 说的问题
    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
    nmdx
        35
    nmdx  
       2020-07-15 12:08:27 +08:00 via Android   ❤️ 1
    相当于一次性拿 60 瓶,最后剩 1 瓶,那么这 1 瓶是 2 号冰箱的概率就是 31/61 了

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

    个人意见,仅供参考
    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   ·   实用小工具   ·   5562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:23 · PVG 17:23 · LAX 01:23 · JFK 04:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.