zoukankan      html  css  js  c++  java
  • [功能帮助类] C#RandomHelper随机数,随机字符,可限制范围-帮助类 (转载)

    点击下载 RandomHelper.rar

    主要功能如下

    1.生成一个指定范围的随机整数,该随机数范围包括最小值,但不包括最大值
    2.生成一个0.0到1.0的随机小数
    3.对一个数组进行随机排序
    4. 一:随机生成不重复数字字符串  
    5.方法二:随机生成字符串(数字和字母混和)
    6.从字符串里随机得到,规定个数的字符串.

    看下面代码吧

    /// <summary>
    /// 编 码 人:苏飞
    /// 联系方式:361983679  
    /// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http://www.sufeinet.com/thread-655-1-1.html[/url]
    /// </summary>
    using System;
     
    namespace DotNet.Utilities
    {
        /// <summary>
        /// 使用Random类生成伪随机数
        /// </summary>
        public class RandomHelper
        {
            //随机数对象
            private Random _random;
     
            #region 构造函数
            /// <summary>
            /// 构造函数
            /// </summary>
            public RandomHelper()
            {
                //为随机数对象赋值
                this._random = new Random();
            }
            #endregion
     
            #region 生成一个指定范围的随机整数
            /// <summary>
            /// 生成一个指定范围的随机整数,该随机数范围包括最小值,但不包括最大值
            /// </summary>
            /// <param name="minNum">最小值</param>
            /// <param name="maxNum">最大值</param>
            public int GetRandomInt(int minNum, int maxNum)
            {
                return this._random.Next(minNum, maxNum);
            }
            #endregion
     
            #region 生成一个0.0到1.0的随机小数
            /// <summary>
            /// 生成一个0.0到1.0的随机小数
            /// </summary>
            public double GetRandomDouble()
            {
                return this._random.NextDouble();
            }
            #endregion
     
            #region 对一个数组进行随机排序
            /// <summary>
            /// 对一个数组进行随机排序
            /// </summary>
            /// <typeparam name="T">数组的类型</typeparam>
            /// <param name="arr">需要随机排序的数组</param>
            public void GetRandomArray<T>(T[] arr)
            {
                //对数组进行随机排序的算法:随机选择两个位置,将两个位置上的值交换
     
                //交换的次数,这里使用数组的长度作为交换次数
                int count = arr.Length;
     
                //开始交换
                for (int i = 0; i < count; i++)
                {
                    //生成两个随机数位置
                    int randomNum1 = GetRandomInt(0, arr.Length);
                    int randomNum2 = GetRandomInt(0, arr.Length);
     
                    //定义临时变量
                    T temp;
     
                    //交换两个随机数位置的值
                    temp = arr[randomNum1];
                    arr[randomNum1] = arr[randomNum2];
                    arr[randomNum2] = temp;
                }
            }
     
     
            // 一:随机生成不重复数字字符串  
            private int rep = 0;
            public string GenerateCheckCodeNum(int codeCount)
            {
                string str = string.Empty;
                long num2 = DateTime.Now.Ticks + this.rep;
                this.rep++;
                Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
                for (int i = 0; i < codeCount; i++)
                {
                    int num = random.Next();
                    str = str + ((char)(0x30 + ((ushort)(num % 10)))).ToString();
                }
                return str;
            }
     
            //方法二:随机生成字符串(数字和字母混和)
            public string GenerateCheckCode(int codeCount)
            {
                string str = string.Empty;
                long num2 = DateTime.Now.Ticks + this.rep;
                this.rep++;
                Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.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;
            }
     
            #region
     
            /// <summary>
            /// 从字符串里随机得到,规定个数的字符串.
            /// </summary>
            /// <param name="allChar"></param>
            /// <param name="CodeCount"></param>
            /// <returns></returns>
            private string GetRandomCode(string allChar, int CodeCount)
            {
                //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"; 
                string[] allCharArray = allChar.Split(',');
                string RandomCode = "";
                int temp = -1;
                Random rand = new Random();
                for (int i = 0; i < CodeCount; i++)
                {
                    if (temp != -1)
                    {
                        rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
                    }
     
                    int t = rand.Next(allCharArray.Length - 1);
     
                    while (temp == t)
                    {
                        t = rand.Next(allCharArray.Length - 1);
                    }
     
                    temp = t;
                    RandomCode += allCharArray[t];
                }
                return RandomCode;
            }
     
            #endregion
            #endregion
        }
    }
  • 相关阅读:
    记一次在Linux上面启动部署在tomcat服务器的程序
    记一次使用命令行启动部署在tomcat上的应用
    记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题
    Spring Boot 连接MySql数据库
    Spring Boot入门===Hello World
    Eclipse利用Maven2搭建SpringMVC框架的Web工程
    redis 如何查看所有的key
    ulimit设置内存限制是否有效
    kafka重复数据问题排查记录
    sql update操作结果
  • 原文地址:https://www.cnblogs.com/lizeyan/p/3635615.html
Copyright © 2011-2022 走看看