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

Jam*_*ell 2 ruby arrays random-sample

在一个战斗计划中,我有一个阵列中的两个玩家:

players = [brad, josh]
Run Code Online (Sandbox Code Playgroud)

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

random_player.attack(other_random_player)
Run Code Online (Sandbox Code Playgroud)

我想确保球员永远不会攻击自己.如果我做:

players[rand(0..1)].attack(players[rand(0..1)])
Run Code Online (Sandbox Code Playgroud)

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

dav*_*ave 9

你可以使用.sample:

match = players.sample(2);
match[0].attack(match[1]);
Run Code Online (Sandbox Code Playgroud)

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

更干净:

p1, p2 = players.sample(2)
p1.attack p2
Run Code Online (Sandbox Code Playgroud)

  • 这是其中一个只有一个好答案的问题,就是这样.如果你写了'p1,p2 = players.sample(2)`,然后是`p1.attack p2`,可能会更清楚.你不需要分号. (3认同)