产生一个1-100长度为100不重复的数组

来源:互联网 发布:会计数据的特点是 编辑:程序博客网 时间:2024/06/04 21:34

问题描述:产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复 (C#实现)

class Program    {        static void Main(string[] args)        {            GetValue(100);            GetValue(1000);            GetValue(10000);            GetValue(100000);            Console.ReadLine();        }        private static void GetValue(int count)        {            Console.WriteLine("产生{0}个随机数", count);            var stw1 = new Stopwatch();            stw1.Start();            Rand1(count);            stw1.Stop();            Console.WriteLine("方法一耗时:{0}({1}毫秒)", stw1.Elapsed, stw1.ElapsedMilliseconds);            var stw2 = new Stopwatch();            stw2.Start();            Rand2(count);            stw2.Stop();            Console.WriteLine("方法二耗时:{0}({1}毫秒)", stw2.Elapsed, stw2.ElapsedMilliseconds);            Console.WriteLine();        }        /// <summary>        /// 方法一        /// </summary>        static void Rand1(int count)        {            var lst = new List<int>(count);            for (var i = 0; i < count; i++)            {                lst.Add(i + 1);            }            var num = new int[count];            var rd = new Random();            for (var i = 0; i < count; i++)            {                var n = rd.Next(0, lst.Count);                num[i] = lst[n];                lst.RemoveAt(n);            }        }        /// <summary>        /// 方法二        /// </summary>        private static void Rand2(int count)        {            var lst = new List<int>(count);            var rd = new Random();            do            {                var n = rd.Next(1, count + 1);                if (!lst.Contains(n)) lst.Add(n);            } while (lst.Count < count);        }    }


输出结果:

产生100个随机数方法一耗时:00:00:00.0002995(0毫秒)方法二耗时:00:00:00.0002533(0毫秒)产生1000个随机数方法一耗时:00:00:00.0001203(0毫秒)方法二耗时:00:00:00.0109224(10毫秒)产生10000个随机数方法一耗时:00:00:00.0031532(3毫秒)方法二耗时:00:00:01.1962977(1196毫秒)产生100000个随机数方法一耗时:00:00:00.3800280(380毫秒)方法二耗时:00:02:46.7962774(166796毫秒)

->可以看出数量大的时候,第二种方式的效率就非常低了

0 0
原创粉丝点击