前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wolfram 分析:如何在风险中获胜——精确概率

Wolfram 分析:如何在风险中获胜——精确概率

作者头像
WolframChina
发布2021-12-31 14:35:16
5310
发布2021-12-31 14:35:16
举报
文章被收录于专栏:WOLFRAMWOLFRAM

本文译自Wolfram博客:https://blog.wolfram.com/2017/11/20/how-to-win-at-risk-exact-probabilities/

经典的棋盘游戏 Risk 涉及通过赢得使用骰子进行的战斗来征服世界。网络上有很多地方可以根据每个玩家拥有的军队数量找出赢得战斗的几率。然而,我所看到的所有这些都是通过蒙特卡罗模拟来实现的,因此本质上是近似的。Wolfram语言使计算准确的值变得如此容易,以至于我忍不住一次性地计算了一遍。

以下是基本战斗规则:进攻方最多可以选择三个骰子(但必须至少比骰子多一支军队),防守方最多可以选择两个(但必须至少拥有两支军队才能使用两个)。为了获得最大的获胜机会,您总是尽可能使用最多的骰子,因此我将忽略其他情况。两名玩家同时掷骰子,然后将双方最高的骰子配对,并且(如果双方都至少掷出两个骰子)次高的骰子配对。最高的骰子会杀死一支军队,在平局的情况下,进攻方是输家。重复这个过程,直到一方军队用完为止。

所以我的目标是创建一个函数pBattle[a,d],它返回战斗最终以攻击者获胜的概率,假设攻击者以 a 支军队开始,而防御者以 d 支军队开始。

我首先编写基本的游戏规则。主要的情况是双方都有足够的军队来至少用两个骰子进行战斗。单轮战斗有三种可能的结果。攻方两胜两败,或双方各输一军。因此,赢得这场战斗的概率是被杀死的军队被移除后获胜概率的总和乘以该结果的概率。

我们还必须涵盖这样一种情况,即任何一方的军队都已不足,而且只有一个游戏棋子处于危险之中。

这建立了一个递归定义,根据战斗后续阶段的概率来定义我们所有的战斗概率。一旦阻止我们重复计算这些值。我们只需要用战斗结束规则来终止这个递归。如果攻击者只有一支军队,他就输了(因为他的军队必须多于骰子),所以我们的获胜概率为零。如果我们的对手已经用完了军队,那么攻击者就赢了。

现在我们必须计算出五个单独攻击结果的概率:pWin2、pWin1Lose1、pLose2、pWin1和pLose1。

当使用两个或三个骰子时,我们可以将分布描述为DiscreteUniformDistribution的OrderDistribution,因为我们总是希望将最高的掷骰子配对在一起。

例如,这是该分布的一个结果;由于OrderDistribution部分,第二个数字将始终是最大的。

单模情况只是均匀分布;无论好坏,我们的玩家都必须使用该值。然而,为了编程方便,我将描述两个数字的分布,但我们永远不会看第一个。

所以现在两次获胜的概率是攻击者的骰子都大于防御者的骰子。防御者必须使用两个骰子,而攻击者可以使用两个或三个。

两次失败的概率也有类似的定义。

剩下的就是平局概率。

单军作战可能是因为进攻方缺乏军队,也可能是因为防守方缺乏军队。无论哪种方式,我们都只查看分布的最后一个值。

而pLose1只是剩下的情况。

我们已经完成了。剩下的就是使用该函数。如果攻击者从 18 支军队开始而防御者只有 6 支军队,这里是准确的(假设骰子公平,没有作弊!)获胜的概率。

我们可以将其近似为 100 位小数。

我们可以快速枚举许多不同起始位置的概率。

以下是仅保留 20 位小数的相应数值。

您可以下载更多排列表,其中包含精确数字 (https://content.wolfram.com/uploads/sites/39/2017/11/table3-xl.png),和大约为 20 位数字 (https://content.wolfram.com/uploads/sites/39/2017/11/table4-xl.png)。

当然,这种级别的准确性是毫无意义的。如果看23对1的战斗,失败的概率大约是您在第一次掷骰子时死亡的概率的一半,当然比您的对手把棋盘扔到空中并拒绝再玩一次的概率要小得多。

附录:生成截过图的代码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WOLFRAM 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档