对随机玩家的最佳获胜/平局百分比

时间:2021-02-22 12:03:04

标签: mathematical-optimization tic-tac-toe

我根据特定的硬编码自定义规则在 R 中制作了自己的井字游戏版本。经过一些优化,我现在无法改进游戏。我通过以下方式针对随机玩家对机器人进行了基准测试:

  1. 机器人不能输掉一场比赛
  2. 机器人启动了 50% 的模拟游戏
  3. 对手在回合中随机选择任何空位进行游戏

在 100,000 场比赛中进行基准测试时,我的机器人赢得 94.95% 的时间(意味着有 5053 场平局)。将其分解为开始时的获胜率为 99.49%,第二次时为 90.42%。

我相信,在开始游戏时,我已经达到了最佳可实现的目标(赢得了 192 场比赛中的 191 场)。但是,我不确定第二次的情况。问题是:鉴于上述三个条件,任何机器人可以达到的最佳效果是什么? A 发现几篇论文表明,使用大量训练算法可以在 80 年代高位实现胜率,因此显然这很有效——只是不清楚是否可以改进。

2 个答案:

答案 0 :(得分:0)

井字游戏是一个非常简单的游戏,它产生的可能游戏状态数量有限。因此不需要硬编码任何东西,您可以使用极大极小(或最好是极小极大)算法来遍历所有可能的移动,直到游戏以赢/平/输结束。这将确保您的机器人始终执行最佳移动并在出现此类移动时找到胜利。

您的问题在编码网站上很难回答。由于您的对手采取随机移动,我假设您需要向数学家询问在与此类玩家对战时获胜的概率(尝试 here)。

但是,如果您的代码真正基于您指定的规则(并且您的机器人可以完美运行),那么您从玩更多游戏中获得的结果将收敛于您的问题的答案。

答案 1 :(得分:0)

结束语,我相信我在另一个论坛上得到了答案:

根据我在 OP 中给出的限制,机器人先行的最佳胜率是 192 场比赛中的 191 场或 99.479%,而随机玩家先行的最佳胜率是 945 场比赛中的 866 场或 91.640%。总的来说,这意味着最佳胜率应该是 115589/120960 或 95.5597%。