package shuffler;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class DataShuffler {
private int rand(int i){
return (int)Math.floor(Math.random()*i);
}
Random random = new Random(System.currentTimeMillis());
public DataShuffler() {
}
private int max;
private int[] deck;
public DataShuffler(int[] deck) {
this.deck = deck;
max = deck.length;
}
public int next(){
int i = rand(max);
int tmp = deck[i];
deck[i] = deck[--max];
deck[max] = tmp;
return tmp;
}
public <T> List<T> shuffle(List<T> oldDeck){
int[] deck = new int[oldDeck.size()];
for( int i = 0; i < deck.length; i++){
deck[i] = i;
}
for (int j = 0; j < deck.length; j++) {
int randomIndex = j + random.nextInt(deck.length - j);
int tmp = deck[j];
deck[j] = deck[randomIndex];
deck[randomIndex] = tmp;
}
List<T> newDeck = new ArrayList<T>();
for (int j = 0; j < oldDeck.size(); j++) {
newDeck.add(j, oldDeck.get(deck[j]));
}
return newDeck;
}
}