抱歉,如果这很长,但是我正在编写一个程序,可以从52张标准牌中抽出一张扑克手(5张不同的纸牌)。我仍然苦苦挣扎的唯一部分是获得不同的纸牌。我现在拥有的代码就很简单,并且大部分都能正常工作,但是有时可以多次绘制同一张卡片。我希望将卡抽出后从卡组中取出,然后卡在那部分上。

Card[] hand = new Card[5];
        for (int i = 0; i < 5; i += 1)
        {
          int index = rand.nextInt(52);
          hand[i] = cards[index];
        }
    return hand;

最佳答案

使用List和Collections.shuffle()。

List<Card> cards = new ArrayList<>(52);
for (int i = 0; i < 52; i++) {
  cards.add(new Card(i)); // or so
}
Collections.shuffle(cards);

Card[] hand = new Card[5];
for (int i = 0; i < 5; i += 1) {
  hand[i] = cards.remove(0);
}

return hand;

关于java - 如何获得数组中不同的随机对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40252860/

10-12 04:10