6
我想写一个C#程序,它以随机顺序执行几个方法A(),B()和C()。我怎样才能做到这一点?以随机顺序调用方法(C#)
我想写一个C#程序,它以随机顺序执行几个方法A(),B()和C()。我怎样才能做到这一点?以随机顺序调用方法(C#)
假设宣布这样一个随机数生成器:
public static Random Rnd = new Random();
让我们定义一个Shuffle
功能带来了列表到随机顺序:中romkyns
/// <summary>
/// Brings the elements of the given list into a random order
/// </summary>
/// <typeparam name="T">Type of elements in the list.</typeparam>
/// <param name="list">List to shuffle.</param>
/// <returns>The list operated on.</returns>
public static IList<T> Shuffle<T>(this IList<T> list)
{
if (list == null)
throw new ArgumentNullException("list");
for (int j = list.Count; j >= 1; j--)
{
int item = Rnd.Next(0, j);
if (item < j - 1)
{
var t = list[item];
list[item] = list[j - 1];
list[j - 1] = t;
}
}
return list;
}
这个洗牌实施礼遇!
现在只是把列表中的方法,随机播放,然后运行它们:
var list = new List<Action> { A, B, C };
list.Shuffle();
list.ForEach(method => method());
Gjorgji的GUID想法是可怕的。请至少按随机顺序排序 - 或者更好的是,使用最多的投票算法。从这些选票中得到暗示 - 社区告诉你哪一个更好。 – 2011-01-26 02:04:10
一个非常可怕的想法,这就是为什么你不会在谷歌找到任何东西,如果你寻找它http://www.google.com/search?q=orderby+%22Guid.NewGuid%22 – 2011-01-26 02:30:16