Como Embaralhar Array de 52 cartas e dividir em dois , classe de jogo(DOMINÒ DE BARALHO)

exemplo assim

class List {

public static void main (String args[]){

String list [] = new String [4];

list[0]=“a”;
list[1]=“b”;
list[2]=“c”;
list[3]=“d”;

}}

Como faço para embaralhar esses elementos sem repetiçao e dividir em dois arrays diferente?

Para embaralhar, use o algoritmo que está no fonte da classe java.util.Collections, método shuffle. Você pode olhar esse fonte no arquivo src.jar (ou src.zip) que normalmente vem com o JDK; basta abrir o arquivo java\util\Collections.java que fica dentro desse jar ou zip.
Para dividir em dois, isso fica com você, porque basta criar 2 arrays de 26 posições, e copiar as primeiras 26 posições para o primeiro array, e as últimas para o segundo array (por exemplo).

poderia me mostrar um exemplo de como ficaria um programa que embaralha pelo método shuffle?
já tentei fazer um programa desta forma mas não consegui compilar!
sou muito iniciante…
:oops:

Demonstrando o que o thingol te disse:

[code]public class Card {
public enum Rank { DEUCE, THREE, FOUR, FIVE, SIX,
SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE }

public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }

private final Rank rank;
private final Suit suit;
private Card(Rank rank, Suit suit) {
    this.rank = rank;
    this.suit = suit;
}

public Rank rank() { return rank; }
public Suit suit() { return suit; }
public String toString() { return rank + " of " + suit; }

private static final List<Card> protoDeck = new ArrayList<Card>();

// Initialize prototype deck
static {
    for (Suit suit : Suit.values())
        for (Rank rank : Rank.values())
            protoDeck.add(new Card(rank, suit));
}

public static ArrayList<Card> newDeck() {
    return java.util.Collections.shuffle( new ArrayList<Card>(protoDeck) );
}

}[/code]

fw

Ps: fonte do programa: http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html, apenas inclui o método shuffle.

[quote=viniciusdospassos]exemplo assim
class List {
public static void main (String args[]){
String list [] = new String [4];
list[0]=“a”;
list[1]=“b”;
list[2]=“c”;
list[3]=“d”;
}}
Como faço para embaralhar esses elementos sem repetiçao e dividir em dois arrays diferente?[/quote]

Ou se preferir:

String[] list = new String[] { "a","b","c","d" }; java.util.List<String> lista = java.util.Arrays.asList(list); java.util.Collections.shuffle(lista); String[] vetor = lista.toArray(list); for(String s: vetor) { System.out.println(s); }

fw

Como o nosso amigo está ainda com a dúvida de dividir em dois conjuntos:

int metade = (int)Math.floor( ((double)vetor.length)/2d ); String[] jogadorA = new String[metade]; String[] jogadorB = new String[metade]; for(int i=0 ; i<metade ; i++) { jogadorA[i] = vetor[i]; jogadorB[i] = vetor[i+metade]; }

ou

String[] jogadorA = java.util.Arrays.copyOfRange(vetor, 0, metade-1); String[] jogadorB = java.util.Arrays.copyOfRange(vetor, metade, vetor.length-1);

tem outras possibilidades, como usar 2i para o jogador A e 2i+1 para B…

fw