快速生成大量指定位数的不重复随机整数

快速生成50W个16位的不重复的随机整数

经测试,生成50W个不到1秒,500W两秒左右,1000W以上的话可能会内存溢出

            Random rnd = new Random();
            HashSet<long> hs = new HashSet<long>();
            for (int i = 0; i < 500000; i++)
            {
                long l = (long)((rnd.NextDouble() + rnd.Next(1, 9)) / 10 * 9999999999999999);
                if (!hs.Add(l))
                    i--;
            }
            Console.ReadLine();

 

用来控制生成的小数为0.1~0.999999之间

(rnd.NextDouble() + rnd.Next(1, 9)) / 10

 

posted @ 2013-07-10 14:45  StupidsCat  阅读(490)  评论(0编辑  收藏  举报