首页/文章/ 详情

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

1年前浏览3967

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

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

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

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

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

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

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

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

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

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

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

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

剩下的就是平局概率。

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

而 pLose1 只是剩下的情况。

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

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

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

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

您可以下载更多排列表,其中包含精确数字 ,和大约为 20 位数字 。

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



   
附录:生成截过图的代码





武汉墨光科技有限公司

武汉墨光是光学领域优质服务商,提供 SYNOPSYS™ 光学设计软件、ASAP Next Generation 光学分析软件、APEX 光机系统分析与设计软件、RP 系列激光分析设计软件、 SimuLase™ 半导体模拟软件、Diffract 波动光学仿真软件、FDTD 仿真软件 等产品的推广、销售、咨询、培训、技术支持、软件二次开发及解决方案等服务,辅助高校教学科研、研究所进行高端技术研发以及光机电厂商利用光学软件研发各领域的光学器件与光机系统,在最短时间内完成量产并获利。

来源:武汉墨光
二次开发半导体光学SYNOPSYSASAPAPEXRP 系列Mathematica光学仪器游戏
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-21
最近编辑:1年前
墨光科技
光学让世界走得更远
获赞 307粉丝 183文章 774课程 25
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈