我已经到处寻找如何在windows phone7的C#中对字符串列表进行混洗/随机化,我还是一个初学者,你可以说这可能超出了我的能力范围,但我正在写一个简单的应用程序,这是它的基础。我有一个字符串列表,我需要对其进行混洗并输出到文本块中。我查过一些零碎的代码,但我知道我错了。有什么建议吗?
发布于 2011-04-08 08:48:32
Fisher-Yates-Durstenfeld shuffle是一种经过验证的易于实现的技术。这里有一个扩展方法,它将在任何IList<T>
上执行就地混洗。
(如果你决定保持原来的列表不变,返回一个新的随机列表,或者像LINQ那样返回到act on IEnumerable
sequences,那么它应该很容易适应。)
var list = new List<string> { "the", "quick", "brown", "fox" };
list.ShuffleInPlace();
// ...
public static class ListExtensions
{
public static void ShuffleInPlace<T>(this IList<T> source)
{
source.ShuffleInPlace(new Random());
}
public static void ShuffleInPlace<T>(this IList<T> source, Random rng)
{
if (source == null) throw new ArgumentNullException("source");
if (rng == null) throw new ArgumentNullException("rng");
for (int i = 0; i < source.Count - 1; i++)
{
int j = rng.Next(i, source.Count);
T temp = source[j];
source[j] = source[i];
source[i] = temp;
}
}
}
https://stackoverflow.com/questions/5588686
复制相似问题