突然有一个需求,要求数组中数据在返回前进行随机打乱,于是就记录下来。
方法一
public static void ListRandom<T>(List<T> sources)
{
Random rd = new Random();
int index = 0;
T temp;
for (int i = 0; i < sources.Count; i++)
{
index = rd.Next(0, sources.Count - 1);
if (index != i)
{
temp = sources[i];
sources[i] = sources[index];
sources[index] = temp;
}
}
}
方法二
public static List<T> ListRandom<T>(List<T> sources)
{
var random = new Random();
var resultList = new List<T>();
foreach (var item in sources)
{
resultList.Insert(random.Next(resultList.Count), item);
}
return resultList;
}
以上两个方法均可以简单的实现需求,但是方法一的性能要优于方法二。
转载请注明:清风亦平凡 » C#随机打乱List数组中项的顺序