岩纸剪刀机器人算法

时间:2012-01-11 22:33:12

标签: python algorithm theory

在我的学校,我们的老师正在举办摇滚,纸,剪刀机器人比赛。我知道如何用Python编程,但我不知道如何编写一个比随机选择武器更有成功机会的机器人。我认为可以存储所有先前的动作,然后寻找模式以抵抗攻击。我正朝着正确的方向前进吗?有什么想法吗?

4 个答案:

答案 0 :(得分:6)

对于摇滚剪刀证明,随机机器人将处于每个等级的中位数
因此,我创建一组机器人,每个机器人计算一个启发式并在并行运行的背景上运行。对于每个回合,每个机器人将虚拟“抽取”并检查他是否赢了或输了 - 如果它本已经在这回合。每个僵尸程序将跟踪它如果玩了多少游戏,以及它将失去多少游戏。
其中一个机器人将是随机攻击者。

每次轮到你了:选择目前为止赢得最多 [贪婪]的机器人 - 并使用它。

使用这种方法,您保证在您班级的最高中位数! [当然有足够数量的游戏]

答案 1 :(得分:3)

如果你正在与人类对抗,那么你就是在正确的轨道上。存储以前的动作是关键。以下两篇文章将对您有所帮助。 How to win at rock, paper, scissors。维基百科在strategy and algorithms上的条目。

答案 2 :(得分:3)

Rock Paper Scissors Programming Competition site包含大量竞争程序(甚至用python编写)。

如果这是您的学校作业,可能会被视为作弊,因为所有提交的来源都是公开的。但是,同样,其他学生也可以使用它们。

答案 3 :(得分:0)

在试图弄清楚其他机器人的策略时,可能会有一些潜在的利润,例如,如果是强迫参与,就会有一些懒惰的学生组成一个总会丢掉剪刀的机器人。

我提出了另一种策略(我在某些类似的比赛中听说过它,但不能再跟踪来源了),假设你可以让几个机器人运行(如果没有,请与你的一些同学一起运行这个战略)。

假设您有4个机器人A,B,C,D

想象一下,每个机器人对其他机器人玩100次。让你的B,C,D机器人玩第一次让我们说10次发挥策略,让它从你的团队中识别为机器人,比如'RPPSPPSSRS',让你的机器人玩其他策略让它被识别由机器人B,C,D。

然后,在接下来的90轮中,机器人B,C,D输掉('纸')到A并随机对抗其他人。让机器人A从B,C,D获胜('剪刀')并随机对抗其他人。

因此,机器人A获得了巨大的优势。