在c# Windows phone 7中变换字符串列表
本文关键字:变换 字符串 列表 Windows phone | 更新日期: 2023-09-27 17:49:15
我到处寻找如何在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;
}
}
}