カードのデッキをシャッフルするためのプログラム (主にメソッド) を書くように依頼されました。次のプログラムを書きました。
public class Deck {
////////////////////////////////////////
// Data Members
////////////////////////////////////////
private Card[] cards; // array holding all 52 cards
private int cardsInDeck; // the current number of cards in the deck
public static final int DECK_SIZE = 52;
/**
* Shuffles the deck (i.e. randomly reorders the cards in the deck).
*/
public void shuffle() {
int newI;
Card temp;
Random randIndex = new Random();
for (int i = 0; i < cardsInDeck; i++) {
// pick a random index between 0 and cardsInDeck - 1
newI = randIndex.nextInt(cardsInDeck);
// swap cards[i] and cards[newI]
temp = cards[i];
cards[i] = cards[newI];
cards[newI] = temp;
}
}
}
しかし、上記のシャッフル方法には、次のような論理エラーがあります。カード番号 4 をカード番号 42 に置き換えて、2 回交換するとします。これを行わない方法はありますか?
ここで 1 つの投稿を確認しました :カードのデッキをシャッフルする
しかし、それは私には意味がありませんでした。