试图决定谁在模拟游戏中首先滚动

时间:2015-12-13 01:52:18

标签: r algorithm web-services

该代码将用于决定谁将成为游戏Wazabi(由Gigamic开发的流行游戏)中的第一个玩家。因此,您了解我尝试做的事情的要点,以下程序决定谁先行:

  1. 每个玩家掷出一个4个六面骰子,由三个结果组成(三个面具有' W'两个面具有' C'剩下的面具有& #39; G',所以例如你输出W的概率为3/6。

  2. 赢得最多Ws的玩家获胜。

  3. 如果有多名玩家滚动最高数量的Ws,那么掷出最高数字的玩家将重新掷出4个骰子,然后W最高的玩家将成为第一个(这可能会递归地发生) )。

  4. 我在r中设计了下面的代码(虽然很乱),试图决定这个玩家应该是谁,但经过几个小时的尝试和公司疲惫的大脑,我希望你们其中一个人能够帮助我。这是我的代码中R控制台的输出:

    .ui-grid-row:hover .ui-grid-cell {
      background-color: beige;
    }

    number_of_players在另一个函数中全局定义为游戏中的玩家数量。 在此测试中等于7。

    很明显,我应该返回一个长度为1的向量,其中包含玩家编号,无论哪个玩家滚动最多Ws,然后进行多次滚动和重新滚动。另外,由于我对R很陌生,我不确定警告信息的来源,如果有人能够解释这有用的话。

1 个答案:

答案 0 :(得分:0)

这里的代码显然遵循您的算法,但比您的尝试简单得多。

这个想法很简单:由于C和G结果之间没有区别,你可以将它们设为相同,值为0.将W结果设为1,然后将它的总和加起来。已被卷起。然后检查是否有赢家,如果没有,只保留最高关系并重复。

似乎只是简单地掷骰子一次,如果打成平局,保持那些并再次滚动。但也许还有更多。

> set.seed(10)
> who_first(7)
Rolling for players 1, 2, 3, 4, 5, 6, 7 
Players rolled 2, 0, 3, 1, 1, 3, 2 points
Rolling for players 3, 6 
Players rolled 2, 2 points
Rolling for players 3, 6 
Players rolled 4, 1 points
Winner is player 3 
> who_first(7)
Rolling for players 1, 2, 3, 4, 5, 6, 7 
Players rolled 0, 2, 1, 1, 0, 3, 1 points
Winner is player 6 
> who_first(7)
Rolling for players 1, 2, 3, 4, 5, 6, 7 
Players rolled 3, 1, 2, 1, 1, 3, 2 points
Rolling for players 1, 6 
Players rolled 0, 3 points
Winner is player 6 

一些运行:

{{1}}