2015-11-18 2 views
-1

Я работаю над java-экспериментом, занимающимся созданием колоды карт. До сих пор я считаю, что у меня установлена ​​колода, и теперь ее нужно перетасовать. То, как я должен перетасовывать это, неоднократно (200 раз) собирал 2 карты случайно из колоды и переключал их. Я по-прежнему относительно новичок в Java и никогда не встречал ничего подобного раньше, поэтому я даже не знаю, с чего начать.Shuffling a Deck

Может кто-нибудь помочь?

public class DeckOfCards { 
+2

Помогите с чем, _specifically_? _I даже не знаю, с чего начать. Stack Overflow не подходит. Мы не обучающий сервис. Если у вас есть конкретный вопрос по конкретной проблеме, мы можем помочь. –

+0

Извините за плохой пост. Я просто не уверен, какая команда или метод будет делать то, что я пытаюсь сделать: произвольно выберите две карты и поменяйте их на 200. Я ошеломлен, когда речь заходит о том, как это сделать. – Nguyen13

ответ

1

У вас есть массив карточек. Чтобы выбрать случайную карту, вы можете использовать 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.

0

Я не понял вашу проблему четко. Но может быть, вы хотите сделать что-то вроде этого (не уверен). Здесь я перетасовываю палубу 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++; 
    } 
} 

В основном методе просто вызвать функцию «отображения».