私はカードのデッキを実装し、そのためのシャッフルメソッドを作成しようとしています。私がメインメソッドで書いているときはすべてうまく動いていますが、シャッフルメソッドを使っても別のメソッドを使ってやってみると、カードの元のシーケンスが得られます(それはシャッフルしていません)。私は間違っているの?カードのデッキとシャッフル方法
import java.util.*;
public class DeckOfCards {
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
private int[] cards;
public DeckOfCards(){
cards = new int[52];
for(int i =0; i < 52; i++){
cards[i] = i;
}
}
public void shuffle(int num){
for(int i = 0; i < num; i++){
int m = (int)Math.random() * cards.length;
int n = (int)Math.random() * cards.length;
int t = cards[m];
cards[m] = cards[n];
cards[n] = t;
}
}
public void display(){
for(int i = 0; i < 52; i++){
String suit = suits[cards[i]/13];
String rank = ranks[cards[i] % 13];
System.out.println(rank+" of "+suit);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DeckOfCards d = new DeckOfCards();
d.display();
d.shuffle(50);
d.display();
}
}
注:も使用することができます'Collections.shuffle'です。 –
@ArnaudDenoyelle:彼らは 'カード'の適切なコレクションを持っていれば最高のアプローチだろう。 – Makoto
@Arnaudありがとう、私はそれを認識していますが、私はインタビューの準備をしていますので、それを実装しようとしていたのはCollections.shuffleです。 –