http://en.wikipedia.org/wiki/Fisher–Yates_shuffle
An implementation of Durstenfeld's algorithm in Java is:
public static void shuffle(int[] array) { Random rng = new Random(); // java.util.Random // n is the number of items remaining to be shuffled. for (int n = array.length; n > 1; n--) { // Pick a random element to swap with the nth element. int k = rng.nextInt(n); // 0 <= k <= n-1 (0-based array) // Swap array elements. int tmp = array[k]; array[k] = array[n-1]; array[n-1] = tmp; } }