grouping the first elements together

advertisements

My following code does the randomization of an array, however, I am wondering if I want to group first two or three elements together always, how should I proceed?

ArrayList<Integer> numbers = new ArrayList<Integer>();

for(int i=1;i<=11;i++)
{
    numbers.add(i);
}
Collections.shuffle(numbers);

for (Integer nums : numbers)
    System.out.println(nums);

Example Output: 5, 7, 4, 11, 2, 3, 1, 9, 6, 8, 10 (Note that the sequence '1,2,3' is randomized within the main array.)


Something like this maybe:

final int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
final int iterations = 10;
final int groupOf = 3;

for (int i = 0; i < array.length; i += groupOf) {
    int groupOfRemainder = array.length - i < groupOf ? array.length - i : groupOf;
    for (int j = 0; j < iterations; j++) {
        int rnd1 = Math.random() * groupOfRemainder;
        int rnd2 = Math.random() * groupOfRemainder;

        Object temp = array[i + rnd1];
        array[i + rnd1] = array[i + rnd2];
        array[i + rnd2] = temp;
    }
}