• .net工具类——随机生成


    .net工具类——随机生成

    1. GetRamCode:生成日期随机码(年月日时分秒毫秒)
    2. Number:生成随机数字
    3. GetCheckCode:生成随机字母字符串(数字字母混和)
    4. GetOrderNumber:根据日期和随机码生成订单号
    5. Next
         
            #region 生成日期随机码
    
            /// <summary>
            /// 生成日期随机码(年月日时分秒毫秒)
            /// </summary>
            /// <returns></returns>
            public static string GetRamCode()
            {
                #region
                return DateTime.Now.ToString("yyyyMMddHHmmssffff");
                #endregion 生成日期随机码
            }
    
            /// <summary>
            /// 生成日期随机码(年月日)
            /// </summary>
            /// <returns></returns>
            public static string GetRamCode2()
            {
                #region
                return DateTime.Now.ToString("yyyyMMdd");
                #endregion 生成日期随机码
            }
    
            #endregion
    
            #region 生成随机字母或数字
    
            /// <summary>
            /// 生成随机数字
            /// </summary>
            /// <param name="length">生成长度</param>
            /// <returns></returns>
            public static string Number(int Length)
            {
                return Number(Length, false);
            }
    
            /// <summary>
            /// 生成随机数字
            /// </summary>
            /// <param name="Length">生成长度</param>
            /// <param name="Sleep">是否要在生成前将当前线程阻止以避免重复</param>
            /// <returns></returns>
            public static string Number(int Length, bool Sleep)
            {
                if (Sleep)
                    System.Threading.Thread.Sleep(3);
                string result = "";
                System.Random random = new Random();
                for (int i = 0; i < Length; i++)
                {
                    result += random.Next(10).ToString();
                }
                return result;
            }
    
            /// <summary>
            /// 生成随机字母字符串(数字字母混和)
            /// </summary>
            /// <param name="codeCount">待生成的位数</param>
            public static string GetCheckCode(int codeCount)
            {
                string str = string.Empty;
                int rep = 0;
                long num2 = DateTime.Now.Ticks + rep;
                rep++;
                Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
                for (int i = 0; i < codeCount; i++)
                {
                    char ch;
                    int num = random.Next();
                    if ((num % 2) == 0)
                    {
                        ch = (char)(0x30 + ((ushort)(num % 10)));
                    }
                    else
                    {
                        ch = (char)(0x41 + ((ushort)(num % 0x1a)));
                    }
                    str = str + ch.ToString();
                }
                return str;
            }
    
            /// <summary>
            /// 根据日期和随机码生成订单号
            /// </summary>
            /// <returns></returns>
            public static string GetOrderNumber()
            {
                string num = DateTime.Now.ToString("yyMMddHHmmss");//yyyyMMddHHmmssms
                return num + Number(2).ToString();
            }
    
            private static int Next(int numSeeds, int length)
            {
                byte[] buffer = new byte[length];
                System.Security.Cryptography.RNGCryptoServiceProvider Gen = new System.Security.Cryptography.RNGCryptoServiceProvider();
                Gen.GetBytes(buffer);
                uint randomResult = 0x0;//这里用uint作为生成的随机数
                for (int i = 0; i < length; i++)
                {
                    randomResult |= ((uint)buffer[i] << ((length - 1 - i) * 8));
                }
                return (int)(randomResult % numSeeds);
            }
    
            #endregion
  • 相关阅读:
    Python multiprocessing相关疑问
    Tornado demo3
    WebSockets
    Tornado Demo1---webspider分析
    Python assert断言
    Python学习之--数据基础
    Python学习之--python概要
    Python学习之--函数/生成器/装饰器
    Python学习之文件操作
    Python操作MySQL数据库
  • 原文地址:https://www.cnblogs.com/amusement1992/p/13496222.html
Copyright © 2020-2023  润新知