洗牌
Shuffling a Deck
我正在进行 java 制作一副纸牌的实验。到目前为止,我相信我已经设置了套牌,现在需要洗牌。我应该洗牌的方式是反复(200 次)从牌组中随机挑选 2 张牌并交换它们。我对 Java 还比较陌生,以前从未遇到过这样的事情,所以我什至不知道从哪里开始。
有人可以帮忙吗?
public class DeckOfCards {
您有一组卡片。要随机选择一张牌,您可以使用 Random#nextInt(int)。它将在 0 和您传递给它的参数之间选择一个随机数。使用它,您只需选择两张随机卡片并将它们交换到数组中。
public final Random random = new Random();
public void shuffle() {
for(int i = 0; i < 200; i++) {
int firstCardIndex = random.nextInt(number - 1);
int secondCardIndex = random.nextInt(number - 1);
Card firstCard = deck[firstCardIndex];
Card secondCard = deck[secondCardIndex];
deck[firstCardIndex] = secondCard;
deck[secondCardIndex] = firstCard;
}
}
有一些常见的洗牌算法。我以前用过Fisher-Yates Shuffle。
我没看清楚你的问题。但也许你想做这样的事情(不确定) - 在这里我洗牌 5 次,每次我从牌堆中随机挑选两张牌。
public void display() {
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"};
List<String> list1=new ArrayList<>(Arrays.asList(ranks));
List<String> list2=new ArrayList<>(Arrays.asList(suits));
int times=1;
while(times<=5){
Collections.shuffle(list1);
Collections.shuffle(list2);
Random r=new Random();
int i=r.nextInt(3);
int j=r.nextInt(3);
int k=r.nextInt(12);
int m=r.nextInt(12);
System.out.println("For "+times+" time you picked up "+list1.get(k)+
" of "+list2.get(i)+" and "+list1.get(m)+ " of "+list2.get(j));
times++;
}
}
在 main 方法中调用 "display" 函数。
我正在进行 java 制作一副纸牌的实验。到目前为止,我相信我已经设置了套牌,现在需要洗牌。我应该洗牌的方式是反复(200 次)从牌组中随机挑选 2 张牌并交换它们。我对 Java 还比较陌生,以前从未遇到过这样的事情,所以我什至不知道从哪里开始。
有人可以帮忙吗?
public class DeckOfCards {
您有一组卡片。要随机选择一张牌,您可以使用 Random#nextInt(int)。它将在 0 和您传递给它的参数之间选择一个随机数。使用它,您只需选择两张随机卡片并将它们交换到数组中。
public final Random random = new Random();
public void shuffle() {
for(int i = 0; i < 200; i++) {
int firstCardIndex = random.nextInt(number - 1);
int secondCardIndex = random.nextInt(number - 1);
Card firstCard = deck[firstCardIndex];
Card secondCard = deck[secondCardIndex];
deck[firstCardIndex] = secondCard;
deck[secondCardIndex] = firstCard;
}
}
有一些常见的洗牌算法。我以前用过Fisher-Yates Shuffle。
我没看清楚你的问题。但也许你想做这样的事情(不确定) - 在这里我洗牌 5 次,每次我从牌堆中随机挑选两张牌。
public void display() {
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"};
List<String> list1=new ArrayList<>(Arrays.asList(ranks));
List<String> list2=new ArrayList<>(Arrays.asList(suits));
int times=1;
while(times<=5){
Collections.shuffle(list1);
Collections.shuffle(list2);
Random r=new Random();
int i=r.nextInt(3);
int j=r.nextInt(3);
int k=r.nextInt(12);
int m=r.nextInt(12);
System.out.println("For "+times+" time you picked up "+list1.get(k)+
" of "+list2.get(i)+" and "+list1.get(m)+ " of "+list2.get(j));
times++;
}
}
在 main 方法中调用 "display" 函数。