Friday, March 11, 2011

shuffle


import java.util.*;
public class Deck {

public class Card {
private int value;
Card(int v) {
value = v;
}

public void print(){
System.out.print(value+";");
}
}

private final int num=52;
Vector<Card> deck = new Vector<Card>();
int[] arr = new int[num];

// implement this shuffle function. DO NOT USE Collections.shuffle() !!
public void shuffle(){
Random rand = new Random();
//given a[]
for (int i=0; i<arr.length; i++) {
arr[i] = i;
}
//for i <- 0..a.length-2
//for(Card c : deck) {
for (int i=0; i<arr.length-1; i++) {
//rnd_index <- random(i, a.length) #inclusive, exclusive
int rnd = i+ rand.nextInt(arr.length-i); //deck.size());
System.out.print(","+rnd);
//swap a[i] and a[rnd_index]
int tmp = arr[i];
arr[i] = arr[rnd];
arr[rnd] = tmp;
}
System.out.println("\nout:");
for (int i=0; i<arr.length; i++) {
System.out.print(","+arr[i]);
}
}

public static void main(String[] args) {
Deck deck = new Deck();
deck.shuffle();
}
}

No comments:

Post a Comment