你现在查看的是RandomHelper.cs类的源码

  1.  /// <summary>  
  2. /// 编 码 人:苏飞  
  3. /// 联系方式:361983679    
  4. /// 更新网站:http://www.sufeinet.com/thread-655-1-1.html  
  5. /// </summary>  
  6. using System;  
  7.   
  8. namespace DotNet.Utilities  
  9. {  
  10.     /// <summary>  
  11.     /// 使用Random类生成伪随机数  
  12.     /// </summary>  
  13.     public class RandomHelper  
  14.     {  
  15.         //随机数对象  
  16.         private Random _random;  
  17.  
  18.         #region 构造函数  
  19.         /// <summary>  
  20.         /// 构造函数  
  21.         /// </summary>  
  22.         public RandomHelper()  
  23.         {  
  24.             //为随机数对象赋值  
  25.             this._random = new Random();  
  26.         }  
  27.         #endregion  
  28.  
  29.         #region 生成一个指定范围的随机整数  
  30.         /// <summary>  
  31.         /// 生成一个指定范围的随机整数,该随机数范围包括最小值,但不包括最大值  
  32.         /// </summary>  
  33.         /// <param name="minNum">最小值</param>  
  34.         /// <param name="maxNum">最大值</param>  
  35.         public int GetRandomInt(int minNum, int maxNum)  
  36.         {  
  37.             return this._random.Next(minNum, maxNum);  
  38.         }  
  39.         #endregion  
  40.  
  41.         #region 生成一个0.0到1.0的随机小数  
  42.         /// <summary>  
  43.         /// 生成一个0.0到1.0的随机小数  
  44.         /// </summary>  
  45.         public double GetRandomDouble()  
  46.         {  
  47.             return this._random.NextDouble();  
  48.         }  
  49.         #endregion  
  50.  
  51.         #region 对一个数组进行随机排序  
  52.         /// <summary>  
  53.         /// 对一个数组进行随机排序  
  54.         /// </summary>  
  55.         /// <typeparam name="T">数组的类型</typeparam>  
  56.         /// <param name="arr">需要随机排序的数组</param>  
  57.         public void GetRandomArray<T>(T[] arr)  
  58.         {  
  59.             //对数组进行随机排序的算法:随机选择两个位置,将两个位置上的值交换  
  60.   
  61.             //交换的次数,这里使用数组的长度作为交换次数  
  62.             int count = arr.Length;  
  63.   
  64.             //开始交换  
  65.             for (int i = 0; i < count; i++)  
  66.             {  
  67.                 //生成两个随机数位置  
  68.                 int randomNum1 = GetRandomInt(0, arr.Length);  
  69.                 int randomNum2 = GetRandomInt(0, arr.Length);  
  70.   
  71.                 //定义临时变量  
  72.                 T temp;  
  73.   
  74.                 //交换两个随机数位置的值  
  75.                 temp = arr[randomNum1];  
  76.                 arr[randomNum1] = arr[randomNum2];  
  77.                 arr[randomNum2] = temp;  
  78.             }  
  79.         }  
  80.   
  81.   
  82.         // 一:随机生成不重复数字字符串    
  83.         private int rep = 0;  
  84.         public string GenerateCheckCodeNum(int codeCount)  
  85.         {  
  86.             string str = string.Empty;  
  87.             long num2 = DateTime.Now.Ticks + this.rep;  
  88.             this.rep++;  
  89.             Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));  
  90.             for (int i = 0; i < codeCount; i++)  
  91.             {  
  92.                 int num = random.Next();  
  93.                 str = str + ((char)(0x30 + ((ushort)(num % 10)))).ToString();  
  94.             }  
  95.             return str;  
  96.         }  
  97.   
  98.         //方法二:随机生成字符串(数字和字母混和)  
  99.         public string GenerateCheckCode(int codeCount)  
  100.         {  
  101.             string str = string.Empty;  
  102.             long num2 = DateTime.Now.Ticks + this.rep;  
  103.             this.rep++;  
  104.             Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));  
  105.             for (int i = 0; i < codeCount; i++)  
  106.             {  
  107.                 char ch;  
  108.                 int num = random.Next();  
  109.                 if ((num % 2) == 0)  
  110.                 {  
  111.                     ch = (char)(0x30 + ((ushort)(num % 10)));  
  112.                 }  
  113.                 else  
  114.                 {  
  115.                     ch = (char)(0x41 + ((ushort)(num % 0x1a)));  
  116.                 }  
  117.                 str = str + ch.ToString();  
  118.             }  
  119.             return str;  
  120.         }  
  121.  
  122.         #region  
  123.   
  124.         /// <summary>  
  125.         /// 从字符串里随机得到,规定个数的字符串.  
  126.         /// </summary>  
  127.         /// <param name="allChar"></param>  
  128.         /// <param name="CodeCount"></param>  
  129.         /// <returns></returns>  
  130.         private string GetRandomCode(string allChar, int CodeCount)  
  131.         {  
  132.             //string allChar = "1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";   
  133.             string[] allCharArray = allChar.Split(',');  
  134.             string RandomCode = "";  
  135.             int temp = -1;  
  136.             Random rand = new Random();  
  137.             for (int i = 0; i < CodeCount; i++)  
  138.             {  
  139.                 if (temp != -1)  
  140.                 {  
  141.                     rand = new Random(temp * i * ((int)DateTime.Now.Ticks));  
  142.                 }  
  143.   
  144.                 int t = rand.Next(allCharArray.Length - 1);  
  145.   
  146.                 while (temp == t)  
  147.                 {  
  148.                     t = rand.Next(allCharArray.Length - 1);  
  149.                 }  
  150.   
  151.                 temp = t;  
  152.                 RandomCode += allCharArray[t];  
  153.             }  
  154.             return RandomCode;  
  155.         }  
  156.  
  157.         #endregion  
  158.         #endregion  
  159.     }  
  160. }