public static void selectionShuffle(int[] values) {
    Random rand = new Random();
    for(int i = values.length; i > 0; i--) {
         int r = rand.nextInt(i); 
         swap(values, r, i);
    }
//updated answer to include below method
public static void swap(int[]a, int i, int j){
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}
I am writing a card game and need to randomly sort the cards in place, I got an ArrayOutOfBoundsException when I ran the above code, with the compiler complaining particularly about the reassignment from   values[i] = values[r] . To be clear, this is , not intended to be a selection sort but instead a selection shuffle. Any help is appreciated!
 
     
    