i = Math.random() * n-- | 0;
And
t = array[n]; array[n] = array[i]; array[i] = t;
You are being confused by the `n--` in the random selection.
And
is using a decremented n.You are being confused by the `n--` in the random selection.