首页 > 代码库 > 产生有序的全局唯一Id
产生有序的全局唯一Id
//利用时间和Guid作为种子产生随机数private string GenerateUniqueID(){ System.Text.StringBuilder sb = new System.Text.StringBuilder(); string str1 = DateTime.Now.ToString("yyyyMMddHHmmss"); Random d = new Random(Guid.NewGuid().GetHashCode()); string str2 = d.Next(10000, 100000).ToString(); return sb.Append(str1).Append(str2).ToString(); }
//利用时间和RNGCryptoServiceProvider产生 public static string GenerateOrderNumber() { string strDateTimeNumber = DateTime.Now.ToString("yyyyMMddHHmmssms"); string strRandomResult = NextRandom(1000, 1).ToString(); return strDateTimeNumber + strRandomResult; } /// <summary> /// 参考:msdn上的RNGCryptoServiceProvider例子 /// </summary> /// <param name="numSeeds"></param> /// <param name="length"></param> /// <returns></returns> private static int NextRandom(int numSeeds, int length) { // Create a byte array to hold the random value. byte[] randomNumber = new byte[length]; // Create a new instance of the RNGCryptoServiceProvider. System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); // Fill the array with a random value. rng.GetBytes(randomNumber); // Convert the byte to an uint value to make the modulus operation easier. uint randomResult = 0x0; for (int i = 0; i < length; i++) { randomResult |= ((uint)randomNumber[i] << ((length - 1 - i) * 8)); } return (int)(randomResult % numSeeds) + 1; }
产生有序的全局唯一Id
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。