在c# Windows phone 7中变换字符串列表

本文关键字:变换 字符串 列表 Windows phone | 更新日期: 2023-09-27 17:49:15

我到处寻找如何在c#中随机化windows phone 7的字符串列表。我还是个初学者,这可能超出了我的能力范围,但我在写一个简单的应用,这是它的基础。我有一个字符串列表,我需要洗牌并输出到一个文本块。我查了一些代码,但我知道我写错了。有什么建议吗?

在c# Windows phone 7中变换字符串列表

Fisher-Yates-Durstenfeld洗牌是一种经过验证且易于实现的技术。下面是一个扩展方法,它将对任意IList<T>执行就地洗牌。

(如果您决定要保持原始列表完整并返回一个新的、经过洗牌的列表,或者对IEnumerable<T>序列(例如LINQ)起作用,则应该很容易适应。)

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;
        }
    }
}