所以我一直在研究一个项目,我让这个方法在数组中最多取16个值并将它们随机化为一个列表。我认为这应该有效,但它没有,只要它运行它崩溃程序但它编译得很好。
数组有“numOfTeams”数量的索引
private List<string> randomizer()
{
List<string> myList = new List<string>();
Random rand = new Random();
int randomVar;
while (myList.Count < numOfTeams)
{
randomVar = rand.Next(0, numOfTeams + 1);
if (array[randomVar] != "null")
{
myList.Add(array[randomVar]);
array[randomVar] = "null";
}
}
return myList;
}
答案 0 :(得分:2)
randomVar = rand.Next(0, numOfTeams);
答案 1 :(得分:0)
我基于T. H. E. Knuth(Knuth shuffle或Fisher-Yates shuffle)的算法实现了一个改组List的方法。
也许这会给你一些提示:
public static void Shuffle<T>(IList<T> list)
{
Random rand = new Random();
int index;
T tmp;
for (int i = 1; i < list.Count; ++i)
{
index = rand.Next(i + 1);
tmp = list[i];
list[i] = list[index];
list[index] = tmp;
}
}