public static void Shuffle<T>(this T[] array) { int n = array.Length; while (n > 1) { var k = Random.Range(0, n--); (array[n], array[k]) = (array[k], array[n]); } }
- 令 n = 数组的长度。
- 在
0 ~ n-1
之间随机取一个数,把它和最后一个数交换。 - 使 n -1,重复以上步骤。
洗牌算法
This post is licensed under CC BY 4.0 by the author.