十三点游戏
法国著名数学家 Pierre Raymond De Montmart 以其在组合学方面的工作而闻名,他提出了一个简单的游戏,称为"十三点游戏"。您有一副 13 张的牌,编号为 1 到 13。将这副牌洗乱后逐张抽取。若某次抽到的牌号与抽取的顺序完全一致,就称为一次"巧合"。例如,您抽到的第 5 张牌正好是 5,即为一次巧合。若您能在抽完所有牌的过程中没有出现任何巧合,则判定获胜。让我们用模拟来计算在这个游戏中获胜的概率。
通过完成本练习,您将进一步强化把抽象问题转化为模拟框架以估计概率的能力。
本练习是课程的一部分
Python 中的统计模拟
练习说明
- 对于每一次模拟抽牌,从
deck中在不放回的前提下抽取并获得 全部 牌,将结果赋给draw。 - 检查此次抽牌中是否存在任何巧合;如果有,则将计数器
coincidences加 1。 - 将没有任何巧合的游戏次数占比作为获胜概率进行计算,并使用
prob_of_winning打印结果。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Pre-set constant variables
deck, sims, coincidences = np.arange(1, 14), 10000, 0
for _ in range(sims):
# Draw all the cards without replacement to simulate one game
draw = np.random.choice(____, size=____, replace=____)
# Check if there are any coincidences
coincidence = (draw == list(np.arange(1, 14))).any()
if coincidence == ____:
coincidences += 1
# Calculate probability of winning
prob_of_winning = ____
print("Probability of winning = {}".format(____))