The shuffling algorithm that DOES NOT use Math.random()