📅  最后修改于: 2023-12-03 14:59:40.851000             🧑  作者: Mango
在C#中,我们可以使用 Random
类和 Fisher-Yates 洗牌算法来轻松地打乱一个数组。本文将向您演示如何使用 Fisher-Yates 洗牌算法在C#中打乱一个数组。
Fisher-Yates 洗牌算法,也称为 Knuth 洗牌算法,是一种常见的用于随机打乱数组的算法。它基于以下思路:
重复执行步骤2和步骤3,直到数组的第一个元素。
现在,我们将使用 C# 中的 Random
类和 Fisher-Yates 洗牌算法来打乱一个整数数组:
int[] numbers = { 1, 2, 3, 4, 5 };
Random random = new Random();
for (int i = numbers.Length - 1; i > 0; i--)
{
int j = random.Next(i + 1);
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
如上代码中显示的,我们首先定义整数数组 numbers
和 Random
类的实例 random
。接着,我们使用 for
循环从最后一个元素开始遍历数组。
在循环中,我们将当前遍历到的元素和随机索引处的元素交换。我们使用 Random.Next()
方法生成一个介于 0 和(当前遍历的元素加 1)之间的随机整数。最后,我们将循环继续向前遍历数组,直到第一个元素。
经过这个操作后,我们将得到一个随机排序后的整数数组。
在 C# 中打乱一个数组的方法很简单,只需要使用 Fisher-Yates 洗牌算法和 Random
类的实例就可以了。变换算法可以用于玩牌游戏,碰巧生成测试数据等等。
Ps: 以上代码片段说明可复制到你的项目中。