我有以下的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);
}
}
然而,當我運行這個方法有些卡似乎從甲板上「消失」 ......任何建議,這是爲什麼? :)
你可以使用'Collections.shuffle'嗎? – wchargin 2013-05-11 18:38:04
或者至少['Collections.swap()'](http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#swap%28java.util.List,%20int ,%20int 29%)? – 2013-05-11 18:39:38
您是否需要在不使用其他軟件包/庫的情況下實現所有功能? I.E.這是一個學術演習嗎? – Makoto 2013-05-11 18:40:25