📜  c# randize list - C# (1)

📅  最后修改于: 2023-12-03 14:59:40.683000             🧑  作者: Mango

C# Randize List

在C#中,有时候我们需要对一个列表中的元素进行随机化排序。本文将讲述如何使用C#在列表中进行随机排序。

如何使用C#进行列表随机化

C#中提供了一个名为Random的类,我们可以使用它来生成随机数。我们可以用Random的实例来生成一个列表的随机排序。下面的代码演示了如何使用C#和Random类对列表进行随机排序:

List<int> list = new List<int> { 1, 2, 3, 4, 5 };
Random rnd = new Random();
list = list.OrderBy(x => rnd.Next()).ToList();

代码解释:

  1. 首先,我们创建了一个整数列表。我们想要对这个列表进行随机排序。
  2. 接下来,我们创建了一个Random实例。这个实例将用于生成随机数。
  3. 然后,我们通过OrderBy方法来对列表进行排序。我们传递给OrderBy一个函数,该函数将为列表中的每个元素生成一个随机数。ToList方法用于将排序后的元素转换为列表。
将上述代码打包成一个通用方法

如果我们想要在代码中多次使用这个随机化列表的算法,可以将它封装到一个通用方法中,这将使代码更加模块化和灵活。下面的代码是一个通用方法,接收一个列表作为参数,然后返回一个随机化后的列表:

public static List<T> ShuffleList<T>(List<T> inputList)
{
    List<T> randomList = new List<T>();
    Random random = new Random();

    while (inputList.Count > 0)
    {
        int randomIndex = random.Next(0, inputList.Count);
        randomList.Add(inputList[randomIndex]);
        inputList.RemoveAt(randomIndex);
    }
    return randomList;
}

代码解释:

  1. 首先,我们声明了一个名为ShuffleList的静态方法,该方法将接收一个列表作为输入,并将返回一个随机化后的列表。
  2. 然后,我们创建了一个名为randomList的新列表,该列表将用于存储随机化元素的列表。
  3. 之后,我们创建了一个Random实例,该实例将用于生成随机数。
  4. 使用while循环,我们不断从输入列表中随机删除一个元素,并将它添加到randomList中。当输入列表为空时,循环停止。
  5. 最后,我们返回一个随机化后的列表。

我们可以使用以下代码来测试我们的通用方法:

List<int> list = new List<int> { 1, 2, 3, 4, 5 };
List<int> randomList = ShuffleList(list);
结论

在C#中,Random类可以用来生成随机数。通过使用OrderBy方法和Random类的实例,我们可以对一个列表进行随机排序。我们可以将这个算法封装到一个通用方法中,以使它在代码中更加灵活和模块化。感谢您的阅读,希望这篇文章对您有所帮助。