当我们需要对一个数组进行随机排序时,可以使用 Fisher-Yates 随机置换算法。以下是使用C#实现将数组内元素打乱顺序的方法的攻略:
步骤一:创建待打乱的数组
首先,创建一个具有一定数量元素的数组(可以根据自己的需要指定)。
int[] arr = {1, 2, 3, 4, 5};
步骤二:初始化随机数生成器
使用C#中的Random类创建对象,用以产生随机数。我们还需要指定数组中元素所在的区间,以便产生合法的随机数。
Random rnd = new Random();
步骤三:循环遍历数组并产生随机索引
使用Fisher-Yates算法,在每一次循环中,生成一个随机数i,其值在当前遍历到的元素及其后面的元素中随机选择一个。我们需要用到Random类的Next()方法来生成随机数。
for (int i = arr.Length - 1; i > 0; i--)
{
int j = rnd.Next(i + 1);
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
其中,j即为随机数,其值范围从0到i,i的初始值为数组长度-1。
示例说明一
比如,我们有一个长度为10的数组,我们可以使用以上算法进行随机打乱。
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Random rnd = new Random();
for (int i = arr.Length - 1; i > 0; i--)
{
int j = rnd.Next(i + 1);
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
Console.WriteLine(String.Join(", ", arr));
输出结果可能为:4, 7, 1, 3, 6, 2, 8, 10, 5, 9
示例说明二
另外一个例子,我们有一个存储字符串的数组,需要进行随机打乱。
string[] arr = {"apple", "banana", "orange", "grape", "kiwi"};
Random rnd = new Random();
for (int i = arr.Length - 1; i > 0; i--)
{
int j = rnd.Next(i + 1);
string temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
Console.WriteLine(String.Join(", ", arr));
输出结果:grape, apple, kiwi, orange, banana
使用此方法,可以实现在C#中随机打乱数组元素的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现将数组内元素打乱顺序的方法 - Python技术站