列出了15个角色名称以及在我的玩家列表中记录这些名字的玩家。我需要从名册中分配2个5人队伍,我很难理解如何在没有重复出现的角色的情况下做到这一点。
ProjectSchema
答案 0 :(得分:1)
我会做什么Sami建议并创建一个shuffle方法。从列表中删除会导致偏差(请参阅Fisher Yates进行说明)。
创建一个Shufflie方法(我没有写这个但是已经将它用于其他项目):
public static List<T> Shuffle<T>(this IList<T> list)
{
Random rng = new Random();
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
return (List<T>)list;
}
大大简化您的代码:
var names = new List<string>();
/* add your names */
names.Shuffle();
var team1 = names.Take(5);
var team2 = names.Skip(5).Take(5);