我正在嘗試實現一副卡片併爲其創建洗牌方法。當我在主要方法中寫入時,一切正常,但當我試圖用不同的方法來完成時,即使使用隨機播放方法後,我也得到了原始序列(不是混洗)。我做錯了什麼?卡片和洗牌方法
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。 –