一、说明
我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克·莫斯特勒(Frederick Mosteller)的《概率论中的五十个具有挑战性的问题与解决方案》)一书。我认为创建一个系列来讨论这些可能作为面试问题出现的迷人问题会很有趣。每篇文章只有 1 个问题,使其成为一个总共有 50 个部分的系列。让我们潜入并激活我们的脑细胞!
图片由作者使用 DALL-E 3 提供。
Chuck-a-Luck 是一种赌博游戏,经常在嘉年华会和赌场玩。玩家可以投注数字 1、2、3、4、5、6 中的任何一个。掷三个骰子。如果玩家的号码出现在骰子的一、二、三上,他将分别获得他原始赌注的一倍、两倍或三倍加上他自己的钱;否则,他将失去股份。
问题:玩家每单位赌注的预期损失是多少?
(实际上,玩家可以在几个数字上分配赌注,但每个这样的赌注都可以被视为一个单独的赌注。
二、问题分析:
合乎逻辑的方法是在六个数字中的每一个上放置一个单位赌注,导致玩家总共下注 6 个单位。有三种不同的可能情况:(1)三个骰子上的所有数字都不同,(2)骰子上的两个数字完全相同,(3)三个骰子上的所有数字都相同。让我们分别考虑每种情况。
情况(1):三个骰子上的所有数字都不同。
在这种情况下,您从三个中奖号码中赢了三个单位,但从三个输号码中损失了三个单位 。因此,损失为 0 (3--3)。 有多少种不同的方法可以得到三个不同的数字?它是 6 x 5 x 4 = 120 种方式。掷三个骰子的总可能结果是 6 x 6 x 6 = 216。
因此,在所有数字都不同的情况下,预期损失为 0 * (120/216) = 0。
情况(2):骰子上的两个数字完全相同。
在这种情况下,您赢得了三个单位,因为您从相同的数字中获得两个单位,从单个不同的数字中获得一个单位 。但是,您从四个 (6-2) 失败数字中的四个单位 中输掉。因此,每单位赌注的损失为 1 /6 (4/6--3/6)。有多少种不同的方法可以得到两个相同的数字?它是 6 x 5 x 3 = 90 种方式。
因此,在两个数字完全相同的情况下,预期损失为 1/6 * (90/216) = 15/216。
情况(3):三个骰子上的所有数字都相同。
在这种情况下,您赢得了三个单位,因为您从相同的数字中获得三个单位 。但是,您从五个 (6-1) 个失败数字中的五个单位 中输掉了。因此,每单位赌注的损失为 2 /6 (5/6--3/6)。有多少种不同的方法可以得到两个相同的数字?它只是 6种方式。
因此,在所有三个数字都相同的情况下,预期损失为 2/6 * (6/216) = 1/108。
要计算玩家每单位赌注的预期损失,只需将所有三种情况的预期损失相加即可。
结合所有三种情况,玩家每单位赌注的预期损失为 0 + 15/216 + 1/108 = 0.079。
三、替代解决方案:
另一种方法是假设玩家只在一个数字上放置一个单位赌注。有四种不同的可能情况:(1)玩家的号码没有出现在三个骰子中的任何一个上,(2)玩家的号码出现在一个骰子上,(3)玩家的号码出现在两个骰子上,(4)玩家的号码出现在所有三个骰子上。让我们分别考虑每种情况。
情况(1):玩家的号码没有出现在三个骰子中的任何一个上。
发生这种情况的概率是 (5/6)³ = 125/216。
情况(2):玩家的号码出现在一个骰子上。
发生这种情况的概率是 (1/6) * (5/6)² * 3C1 = 25/72。
情况(3):玩家的号码出现在两个骰子上。
发生这种情况的概率是 (1/6)² * (5/6) * 3C2 = 5/72。
情况(4): 玩家的号码出现在所有三个骰子上。
发生这种情况的概率为 (1/6)³ * 3C3 = 1/216。
通过将概率乘以每种情况的损失,我们得到与之前相同的结果(如下图所示)。
每单位股份的预期损失。
Python 代码:
ba
import numpy as np
n_trials = 10000000
choice = np.random.randint(1,7, size = (n_trials,1))
rolls = np.random.randint(1,7, size = (n_trials, 3))
count = np.sum(choice==rolls, axis=1)
mean_loss = (np.sum(count==0) + (-1)*np.sum(count))/n_trials
print(f'Expected loss per unit stake: {mean_loss:.3f}')
# Output:
# Expected loss per unit stake: 0.079
这就是这个运气🎲问题的全部内容。欢迎任何反馈或问题!该代码可在我的 Github 上找到。请继续关注本系列的下一部分!:)