????????我最近对与概率有关的问题产生了兴趣。偶然读到了弗雷德里克·莫斯特勒(Frederick Mosteller)的《概率论中的五十个具有挑战性的问题与解决方案》)一书。我认为创建一个系列来讨论这些可能作为面试问题出现的迷人问题会很有趣。每篇文章只有 1 个问题,使其成为一个总共有 50 个部分的系列。让我们潜入并激活我们的脑细胞🧠!
图片由作者使用 DALL-E 3 提供。
布朗先生总是在轮盘赌中不顾好心朋友的建议,在数字 13 上下注一美元。为了帮助布朗先生解决轮盘赌问题,好朋友总是给布朗打赌20美元,在36次游戏结束时,布朗将落后。
(大多数美式轮盘赌有 38 个相同可能性的数字。如果玩家的号码出现,他将获得 35 倍的赌注,并取回他原来的赌注;否则他将失去股份)
????????数字 13 出现的概率是 1/38,如果它出现,布朗先生将获得 35 美元。另一方面,如果 13 号没有出现,他将损失 1 美元,这种情况发生的概率是 37/38。在这种情况下,轮盘赌的预期收益为负,如下所示。
轮盘赌的预期回报。
????????如果布朗先生的 13 号在 36 个回合中根本没有出现,他将损失 36 美元。另一方面,如果他的号码出现一次,他在获胜的回合中获得 35 美元,在失败的回合中损失 35 美元(收支平衡)。因此,为了在 36 场比赛结束时不落后,他需要至少赢一次。13 号在 36 个回合中完全没有出现的概率是 (37/38)3?,布朗先生必须向善良的朋友支付 20 美元。另一方面,如果 13 号在 36 个回合中至少出现一次,布朗先生将从 Kind Friend 那里获得 20 美元。在这种情况下,Kind Friend 的预期回报是正的,如下所示。
来自善良朋友的预期回报。
布朗先生的总预期奖金为 4.69 美元至 1.89 美元 = 2.80 美元。
总之,在Kind Friend的帮助下,布朗先生的预期胜利是积极的。如果布朗先生输掉了所有 36 场比赛,他将损失 56 美元(20 美元给好朋友 + 36 美元给轮盘赌)。
import numpy as np
n_trials = 10000000
roulette_win_count = np.random.binomial(36, 1/38, size=n_trials)
kind_friend_win_count = (roulette_win_count > 0).astype(int)
payoffs_from_roulette = (-36 + roulette_win_count) + (35*roulette_win_count)
payoffs_from_kind_friend = 20*kind_friend_win_count - 20*(1-kind_friend_win_count)
total_expected_payoffs = np.mean(payoffs_from_roulette + payoffs_from_kind_friend)
print(f'Total expected payoffs for Mr. Brown: {total_expected_payoffs:.2f}')
# Output:
# Total expected payoffs for Mr. Brown: 2.80