let rand = new System.Random() let swap x y (a: 'a []) = let tmp = a.[x] a.[x] <- a.[y] a.[y] <- tmp // shuffle an array (in-place) let shuffle a = Array.iteri (fun i _ -> a |> swap i (rand.Next(i, Array.length a)))