开始使用免费开始使用

十三点游戏

法国著名数学家 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(____))
编辑并运行代码