Hacker News new | ask | show | jobs
by thethirdone 3257 days ago
How so? It seems correct to me.
1 comments

This implementation always moves the nth item, it should only do it most of the time, it could never return the starting array but needs to be able to.
This implementation NEVER moves the nth item as that is past the end of the array.

   i = Math.random() * n-- | 0; 
generates a value less than n.

And

    t = array[n];
    array[n] = array[i];
    array[i] = t;
is using a decremented n.

You are being confused by the `n--` in the random selection.