数组随机化方法。搬到清单

时间:2014-03-22 23:41:24

标签: c# arrays list random

所以我一直在研究一个项目,我让这个方法在数组中最多取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;
    }

2 个答案:

答案 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;
    }
}