Shuffling

By | September 1, 2016
Share the joy
  •  
  •  
  •  
  •  
  •  
  •  

Assuming we have an integer array, we want to shuffle(randomly reset elements in array). One approach is like this: iterate each element from [0, …, n – 1]. For each element i, swap i with a random position within [0, …, i].

public void shuffle(int[] nums) {
    Random random = new Random();
    for (int i = 0; i < nums.length; i++) {
        int j = random.nextInt(i + 1);
        swap(nums, i, j);
    }
}

private void swap(int[] nums, int i, int j) {
    int tmp = nums[i];
    nums[i] = nums[j];
    nums[j] = tmp;
}