【发布时间】:2011-08-14 00:12:41
【问题描述】:
我需要一个扩展方法来随机播放IEnumerable<T>。它还可以使用int 来指定返回的IEnumerable 的大小。更好地保持IEnumerable 的不变性。我目前对IList的解决方案-
public static IList<T> Shuffle<T>(this IList<T> list, int size)
{
Random rnd = new Random();
var res = new T[size];
res[0] = list[0];
for (int i = 1; i < size; i++)
{
int j = rnd.Next(i);
res[i] = res[j];
res[j] = list[i];
}
return res;
}
public static IList<T> Shuffle<T>(this IList<T> list)
{ return list.Shuffle(list.Count); }
【问题讨论】:
-
请注意,为了让
< >出现,它们通常必须被格式化为代码,或者内联反引号(正如我添加的那样)或(如你所做的那样)四格缩进
标签: c# ienumerable shuffle