У меня проблема с перетасовкой двух колод. Я создал две колоды, используя двумерный массив. Имейте в виду, что это были требования. Мне также необходимо перемешать их, используя метод shuffle (), который принимает одномерный массив и возвращает одномерный массив.
После перетасовки обеих колод мне нужно выбрать первые две карты из первой колоды и первые две карты из второй колоды и проверить, совпадают ли они. А также количество тасовок, необходимых для получения результата.
Пример вывода:
Две карты для точного матча из колоды 1: Ace of Diamonds, 2 of Clubs
Две карты для точного матча из колоды 2: Ace of Diamonds, 2 of Clubs
Количество перемешанных раз: 387
Это вторая часть проекта, над которым мы работали, и ниже я попытался решить эту проблему.
Я пытался создавать колоды, используя приведенный ниже код, который работал
int[][] deck = new int[2][52];
for (int i = 0; i <= deck.length - 1; i++) {
for (int j = 0; j < deck[i].length; j++) {
deck[i][j] = j;
}
}
И я написал метод shuffle, но, похоже, он не работает.
public static int[] shuffle(int[] deck) {
for(int i=0; i<deck.length; i++) {
int index = (int)(Math.random()* deck.length);
int temp = deck[i];
deck[i] = deck[index];
deck[index] = temp;
}
return deck;
} * * тысяча двадцать-один
Приведенный ниже код является исходным кодом из первой части этого проекта, где мы должны были напечатать четыре вида из одной колоды после перетасовки и подсчитать, сколько перетасовок потребовалось, чтобы получить четыре вида
class Main {
public static void main(String[] args) {
String[] suit = { "Spades", "Hearts", "Diamond", "Clubs" };
String[] rank = { "Ace", "1", "2", "3", "4",
"5", "6", "7", "8", "9",
"10", "Jack", "Queen", "King" };
int rank1, rank2, rank3, rank4, suit1, suit2, suit3, suit4, count = 0;
int[] deck = new int[52];
for (int i = 0; i < deck.length; i++) {
deck[i] = i;
}
do {
count++;
for (int i = 0; i < deck.length; i++) {
int index = (int) (Math.random() * deck.length);
int temp = deck[i];
deck[i] = deck[index];
deck[index] = temp;
}
suit1 = deck[0] / 13;
suit2 = deck[1] / 13;
suit3 = deck[2] / 13;
suit4 = deck[3] / 13;
rank1 = deck[0] % 13;
rank2 = deck[1] % 13;
rank3 = deck[2] % 13;
rank4 = deck[3] % 13;
} while (rank1 != rank2 || rank2 != rank3 || rank3 != rank4);
System.out.println(" Four-of-kind cards: " + suit[suit1] + " of "
+ rank[rank1] + ", " + suit[suit2] + " of " + rank[rank2]
+ ", " + suit[suit3] + " of " + rank[rank3] + ", "
+ suit[suit4] + " of " + rank[rank4]
+ "\n Number of shuffled times: " + count);
}
}
Еще раз результат должен выглядеть следующим образом.
Пример вывода:
Две карты точного соответствия из колоды 1: Ace of Diamonds, 2 of Clubs
Две карты точного матча из колоды 2: Ace of Diamonds, 2 of Clubs
Количество перемешанных раз: 387