内容显示页
 
类别:.Net + C# | 浏览(4714) | 2008-4-18 15:22:26

 

//演示

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace 生成N个不重复随机数的两个函数
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime d1 = System.DateTime.Now;
            int[] list1 = GetRandom1(1, 100000, 5000);
            TimeSpan dd1 = System.DateTime.Now - d1;

            DateTime d2 = System.DateTime.Now;
            int[] list2 = GetRandom2(1, 100000*100, 5000);
            TimeSpan dd2 = System.DateTime.Now - d2;

            //foreach (int i in list1)
            //    Console.Write("{0},", i);
            //foreach (int ii in list2)
            //    Console.Write("{0},", ii);

            Console.WriteLine("第一种方法,1-100000    里取5000个用时:{0}", dd1.TotalMilliseconds);
            Console.WriteLine("第二种方法,1-100000*100里取5000个用时:{0}", dd2.TotalMilliseconds);

            Console.WriteLine("判断第二种方法里是否有重复数,如果是5000就是没有重复的:{0}",RemoveDup(list2).Length);
            Console.ReadKey();

        }

        public static int[] RemoveDup(int[] myData)
        {
            if (myData.Length > 0)
            {
                Array.Sort(myData);
                int size = 1;
                for (int i = 1; i < myData.Length; i++)
                    if (myData[i] != myData[i - 1])
                        size++;
                int[] myTempData = new int[size];
                int j = 0;
                myTempData[j++] = myData[0];
                for (int i = 1; i < myData.Length; i++)
                    if (myData[i] != myData[i - 1])
                        myTempData[j++] = myData[i];
                return myTempData;
            }
            return myData;
        }  


        //方法1
        public static int[] GetRandom1(int minValue, int maxValue, int count)
        {

            Random rnd = new Random();
            int length = maxValue - minValue + 1;
            byte[] keys = new byte[length];
            rnd.NextBytes(keys);
            int[] items = new int[length];
            for (int i = 0; i < length; i++)
            {
                items[i] = i + minValue;
            }
            Array.Sort(keys, items);
            int[] result = new int[count];
            Array.Copy(items, result, count);
            return result;

        }

        //方法2
        public static int[] GetRandom2(int minValue, int maxValue, int count)
        {
            int[] intList = new int[maxValue];
            for (int i = 0; i < maxValue; i++)
            {
                intList[i] = i + minValue;
            }
            int[] intRet = new int[count];
            int n = maxValue;
            Random rand = new Random();
            for (int i = 0; i < count; i++)
            {
                int index = rand.Next(0, n);
                intRet[i] = intList[index];
                intList[index] = intList[--n];
            }

            return intRet;
        }

    }
}

 

 


引用本页地址:http://www.yongfa365.com/item/CShengChengNGeBuZhongFuSuiJiShuDeLiangGeHanShu.html
 
 
相关链接
 
网友评论:
1 匿名网友 - 2009-11-28 23:12:26
啊实打实的
 
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片 看不清? 换张图试试
 
     
 
 
文章分类
 
 
.Net + C#(73)
 
 
ASP+VBS(161)
 
 
 
Linux(10)
 
 
 
web 2.0(26)
 
 
 
 
 
心程(68)
 
生活(97)
 
 
     

Power by :柳永法(yongfa365)'Blog  | 京ICP备07011491号  QQ:64049027  E-mail:64049027@qq.com yongfa365'CodePlex yongfa365'CodeGoogle

申请友情链接 要求:跟本站主题相类似正规网站,双方交换为首页位置

转载请注明来源,以便后人及时得到最新、修正、加强版!!!