RandomOperate.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. namespace Ant.Service.Utilities
  3. {
  4. public class RandomOperate
  5. {
  6. // 一:随机生成不重复数字字符串
  7. private int rep = 0;
  8. public string GenerateCheckCodeNum(int codeCount)
  9. {
  10. string str = string.Empty;
  11. long num2 = DateTime.Now.Ticks + this.rep;
  12. this.rep++;
  13. Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
  14. for (int i = 0; i < codeCount; i++)
  15. {
  16. int num = random.Next();
  17. str = str + ((char)(0x30 + ((ushort)(num % 10)))).ToString();
  18. }
  19. return str;
  20. }
  21. //方法二:随机生成字符串(数字和字母混和)
  22. public string GenerateCheckCode(int codeCount)
  23. {
  24. string str = string.Empty;
  25. long num2 = DateTime.Now.Ticks + this.rep;
  26. this.rep++;
  27. Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
  28. for (int i = 0; i < codeCount; i++)
  29. {
  30. char ch;
  31. int num = random.Next();
  32. if ((num % 2) == 0)
  33. {
  34. ch = (char)(0x30 + ((ushort)(num % 10)));
  35. }
  36. else
  37. {
  38. ch = (char)(0x41 + ((ushort)(num % 0x1a)));
  39. }
  40. str = str + ch.ToString();
  41. }
  42. return str;
  43. }
  44. #region
  45. /// <summary>
  46. /// 从字符串里随机得到,规定个数的字符串.
  47. /// </summary>
  48. /// <param name="allChar"></param>
  49. /// <param name="CodeCount"></param>
  50. /// <returns></returns>
  51. private string GetRandomCode(string allChar, int CodeCount)
  52. {
  53. //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";
  54. string[] allCharArray = allChar.Split(',');
  55. string RandomCode = "";
  56. int temp = -1;
  57. Random rand = new Random();
  58. for (int i = 0; i < CodeCount; i++)
  59. {
  60. if (temp != -1)
  61. {
  62. rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
  63. }
  64. int t = rand.Next(allCharArray.Length - 1);
  65. while (temp == t)
  66. {
  67. t = rand.Next(allCharArray.Length - 1);
  68. }
  69. temp = t;
  70. RandomCode += allCharArray[t];
  71. }
  72. return RandomCode;
  73. }
  74. #endregion
  75. }
  76. }