从数组中随机选择两个不同的项目

时间:2015-08-24 23:54:18

标签: arrays ruby random-sample

在战斗计划中,我有两个阵容:

players = [brad, josh]

我想随机选择两个不同的玩家,其中一个将攻击另一个,示意图如下:

random_player.attack(other_random_player)

我想确保玩家永远不会攻击自己。如果我这样做:

players[rand(0..1)].attack(players[rand(0..1)])

一个玩家有可能会自己战斗。一旦第一个玩家被选中并与阵列中剩余的玩家战斗,我该如何做到这一点?

2 个答案:

答案 0 :(得分:9)

您可以使用.sample

match = players.sample(2);
match[0].attack(match[1]);

这将从阵列中随机挑选两名玩家,然后你让他们互相争斗。没有办法同时选择同一个玩家。

更干净:

p1, p2 = players.sample(2)
p1.attack p2

答案 1 :(得分:-2)

你可以这样做:

players.delete_at(rand(players.length)).attack(players.sample)

这样每次都会从阵列中删除1个玩家。如果你有超过2名玩家,并希望其中一名玩家攻击其他玩家,那将会奏效。

如果你只有2名玩家,你可以这样做:

players.delete_at(rand(players.length)).attack(players[0])