• C#生成不重复随机数的两个函数


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

  • 相关阅读:
    java-抽象类
    java-接口
    java-面向对象总结
    java-单例设计模式
    java数组
    .Net框架整理
    PHP结合memcacheq消息队列解决并发问题
    浅谈DDos攻击
    PHP+ffmpeg+nginx的配置实现视频转码(转)
    使用Nginx的X-Accel-Redirect实现大文件下载
  • 原文地址:https://www.cnblogs.com/jayleke/p/1806835.html
Copyright © 2020-2023  润新知