How to "shuffle" an array?

arrays, java, shuffle, swap

Solution

How about:

List<Card> list =  Arrays.asList(deck);
Collections.shuffle(list);

Or one-liner:

Collections.shuffle(Arrays.asList(deck));

Problem

I am having a tough time trying to create a "shuffleDeck()" method. What I am trying to do is create a method that will take an array parameter (which will be the deck of cards) shuffle the cards, and return the shuffled array list. This is the code: ``` class Card { int value; String suit; String name; public String toString() { return (name + " of " + suit); } } public class PickACard { public static void main( String[] args) { Card[] deck = buildDeck(); // display Deck(deck); int chosen = (int)(Math.random()* deck.length); Card picked = deck[chosen]; System.out.println("You picked a " + picked + " out of the deck."); System.out.println("In Blackjack your card is worth " + picked.value + " points."); } public static Card[] buildDeck() { String[] suits = {"clubs", "diamonds", "hearts", "spades" }; String[] names = {"ZERO", "ONE", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "Jack", "Queen", "King", "Ace" }; int i = 0; Card[] deck = new Card[52]; for ( String s: suits ) { for ( int v = 2; v<=14; v++) { Card c = new Card(); c.suit = s; c.name = names[v]; if ( v == 14) c.value = 11; else if ( v>10) c.value = 10; else c.value = v; deck[i] = c; i++; } } return deck; } public static String[] shuffleDeck( Card[] deck) { /** I have attempted to get two index numbers, and swap them. I tried to figure out how to loop this so it kind of simulates "shuffling". */ } public static void displayDeck( Card[] deck) { for ( Card c: deck) { System.out.println(c.value + "\t" + c); } } } ```

Original source

Related problems