我有以下java代码,它应该“洗牌”一副牌中的牌。牌组是一个包含卡片对象的数组列表。
private void ShuffleDeck() {
//Number of cards in deck
int deckSize = deck.size();
//Swapping 100 cards
for(int i = 0; i < 15; i++) {
//Generating two random card indexes
int indexA = (int) ((Math.random() * deckSize-1));
int indexB = (int) (Math.random() * deckSize-1);
System.out.println(indexA + " " + indexB);
//Getting objects
Card cardA = deck.get(indexA);
Card cardB = deck.get(indexB);
//Temporaily removing these cards from deck
deck.remove(cardA);
deck.remove(cardB);
//Swapping around the two cards
deck.add(indexA, cardB);
deck.add(indexB, cardA);
}
}
但是,当我运行此方法时,一些卡片似乎从牌组中“消失”...关于为什么会这样的任何建议吗? :)
最佳答案
假设deck
是 List<Card>
(包括 ArrayList
等):
public void shuffleDeck() { // please use camelCase method names
Collections.shuffle(deck);
}
不要重新发明轮子。
关于java - 洗牌算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500477/