zoukankan      html  css  js  c++  java
  • .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
  • 相关阅读:
    ASP.NET Core 2.1 Web API + Identity Server 4 + Angular 6 + Angular Material 实战小项目视频
    .NET Core TDD 前传: 编写易于测试的代码 -- 单一职责
    学习Identity Server 4的预备知识 (误删, 重补)
    .NET Core TDD 前传: 编写易于测试的代码 -- 全局状态
    .NET Core TDD 前传: 编写易于测试的代码 -- 依赖项
    .NET Core TDD 前传: 编写易于测试的代码 -- 构建对象
    .NET Core TDD 前传: 编写易于测试的代码 -- 缝
    SpringBoot入门教程(十)应用监控Actuator
    SpringBoot入门教程(九)定时任务Schedule
    SpringBoot入门教程(八)配置logback日志
  • 原文地址:https://www.cnblogs.com/amusement1992/p/13496222.html
Copyright © 2011-2022 走看看