随机将阵列分成2个均匀分割的阵列

时间:2014-02-13 01:52:00

标签: java arrays split

所以我试图在一个方法中将一个数组均匀地随机分成另外两个数组。

我是Java的新手,我几乎不知道任何Array方法,也不知道在哪里找到它们。

这是我到目前为止所做的:

public void makeTeams(){
        Player[] online = this.getServer().getOnlinePlayers();
        Player[] team1;
        Player[] team2;
    }

我使用的是Bukkit的播放器类型,一个Minecraft API。

2 个答案:

答案 0 :(得分:4)

Collections框架有更多好处 - 除非你真的需要使用它们,否则通常应该避免使用数组。不过,既然您已经要求使用数组,那么您可以使用Collections来为您完成繁重的工作。

要创建两个大小相同的团队,请从组中随机选择团队成员:

Player[] online = getServer().getOnlinePlayers(); // don't need to code "this."
List<Player> list = Arrays.asList(online);
Collections.shuffle(list);
Player[] team1 = list.subList(0, list.size() / 2).toArray(online);
Player[] team2 = list.subList(list.size() / 2, list.size()).toArray(online);

此代码可以满足该群体中奇数玩家的需求。

如果你正在使用Collections(一个Set将是正确使用的Collection)而不是数组,那么任务就会简单得多。

答案 1 :(得分:1)

这将从数组中获取一个随机项:

Player playa = online[Math.floor(Math.random()*online.length)];

只需遍历在线阵列,然后一个接一个地填充team1和team2。确保不要两次使用播放器。