public static IEnumerable Shuffle(this IEnumerable source, Random rng) { T[] elements = source.ToArray(); for (int i = elements.Length - 1; i >= 0; i--) { int swapIndex = rng.Next(i + 1); yield return elements[swapIndex]; elements[swapIndex] = elements[i]; } } 的重要说明> 在使用>类时,请记住这些要点:Random> 在快速演替中创建多个实例可以导致类似的随机数序列。 Random类不是线程安全。 Random>请参阅链接的文章,以获取有关使用类避免这些陷阱的最佳实践。