首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C# Windows phone7中混洗字符串列表

在C# Windows phone7中混洗字符串列表
EN

Stack Overflow用户
提问于 2011-04-08 07:10:23
回答 1查看 1.6K关注 0票数 0

我已经到处寻找如何在windows phone7的C#中对字符串列表进行混洗/随机化,我还是一个初学者,你可以说这可能超出了我的能力范围,但我正在写一个简单的应用程序,这是它的基础。我有一个字符串列表,我需要对其进行混洗并输出到文本块中。我查过一些零碎的代码,但我知道我错了。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2011-04-08 08:48:32

Fisher-Yates-Durstenfeld shuffle是一种经过验证的易于实现的技术。这里有一个扩展方法,它将在任何IList<T>上执行就地混洗。

(如果你决定保持原来的列表不变,返回一个新的随机列表,或者像LINQ那样返回到act on IEnumerable sequences,那么它应该很容易适应。)

代码语言:javascript
运行
复制
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;
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5588686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档