#region 生成日期随机码
2 /// <summary>
3 /// 生成日期随机码
4 /// </summary>
5 /// <returns></returns>
6 public static string GetRamCode()
7 {
8 #region
9 return DateTime.Now.ToString("yyyyMMddHHmmssffff");
10 #endregion
11 }
12 #endregion
#region 生成随机字母或数字
2 /// <summary>
3 /// 生成随机数字
4 /// </summary>
5 /// <param name="length">生成长度</param>
6 /// <returns></returns>
7 public static string Number(int Length)
8 {
9 return Number(Length, false);
10 }
11
12 /// <summary>
13 /// 生成随机数字
14 /// </summary>
15 /// <param name="Length">生成长度</param>
16 /// <param name="Sleep">是否要在生成前将当前线程阻止以避免重复</param>
17 /// <returns></returns>
18 public static string Number(int Length, bool Sleep)
19 {
20 if (Sleep)
21 System.Threading.Thread.Sleep(3);
22 string result = "";
23 System.Random random = new Random();
24 for (int i = 0; i < Length; i++)
25 {
26 result += random.Next(10).ToString();
27 }
28 return result;
29 }
30 /// <summary>
31 /// 生成随机字母字符串(数字字母混和)
32 /// </summary>
33 /// <param name="codeCount">待生成的位数</param>
34 public static string GetCheckCode(int codeCount)
35 {
36 string str = string.Empty;
37 int rep = 0;
38 long num2 = DateTime.Now.Ticks + rep;
39 rep++;
40 Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
41 for (int i = 0; i < codeCount; i++)
42 {
43 char ch;
44 int num = random.Next();
45 if ((num % 2) == 0)
46 {
47 ch = (char)(0x30 + ((ushort)(num % 10)));
48 }
49 else
50 {
51 ch = (char)(0x41 + ((ushort)(num % 0x1a)));
52 }
53 str = str + ch.ToString();
54 }
55 return str;
56 }
57 /// <summary>
58 /// 根据日期和随机码生成订单号
59 /// </summary>
60 /// <returns></returns>
61 public static string GetOrderNumber()
62 {
63 string num = DateTime.Now.ToString("yyMMddHHmmss");//yyyyMMddHHmmssms
64 return num + Number(2).ToString();
65 }
66 private static int Next(int numSeeds, int length)
67 {
68 byte[] buffer = new byte[length];
69 System.Security.Cryptography.RNGCryptoServiceProvider Gen = new System.Security.Cryptography.RNGCryptoServiceProvider();
70 Gen.GetBytes(buffer);
71 uint randomResult = 0x0;//这里用uint作为生成的随机数
72 for (int i = 0; i < length; i++)
73 {
74 randomResult |= ((uint)buffer[i] << ((length - 1 - i) * 8));
75 }
76 return (int)(randomResult % numSeeds);
77 }
78 #endregion
原文:http://www.cnblogs.com/zhangxiaolei521/p/5808665.html