1. 程式人生 > >C#中生成不重複隨機數

C#中生成不重複隨機數

如果只是生成一個隨機數,C#中的Random函式就足夠用了,但如果需要生產若干個隨機數,且這些數不能重複,就需要自己來寫相應的方法了。

1.使用List<int>來儲存隨機數,List.Contain方法來判斷生成的隨機數是否已經存在

以在1-10中取5個不重複的隨機數為例

        public List<int> Generate1()
        {
            Random random = new Random();
            List<int> result = new List<int>();
            int temp;
            while (result.Count < 5)
            {
                temp = random.Next(0, 11);
                if (!result.Contains(temp))
                {
                    result.Add(temp);
                }
            }
            return result;
        } 
2.在一個List中中儲存所有可能的數,每次隨機取出一個,並在List中把它移除

以在1-10中取5個不重複的隨機數為例

        public List<int> Generate2()
        {
            List<int> all = new List<int>();
            List<int> result = new List<int>();
            Random random = new Random();

            for (int i = 0; i < 11; i++)
            {
                all.Add(i);
            }

            for (int j = 0; j < 5; j++)
            {
                int index = random.Next(0, all.Count - 1);
                result.Add(all[index]);
                all.RemoveAt(index);
            }

            return result;
        }