• java生成随机数


    package com.rd.p2p.common.util;
    
    import java.util.Iterator;
    import java.util.LinkedHashSet;
    import java.util.Random;
    import java.util.Set;
    import java.util.UUID;
    
    /**
     * 工具类-随机数
    
     */
    public class RandomUtil {
    
        /**
         * 获取从a至z,长度为length随机数
         * 
         * @return
         */
        public static String getRandomStr(int length) {
            String base = "abcdefghijklmnopqrstuvwxyz";
            Random random = new Random();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < length; i++) {
                int number = random.nextInt(base.length());
                sb.append(base.charAt(number));
            }
            return sb.toString();
        }
    
        /**
         * 获取范围内int值
         * 
         * @param 获取范围内int值
         * @return
         */
        public static int getRandomRange(int max, int min) {
            return (int) (Math.random() * (max - min) + min);
        }
    
        /**
         * 获取随机长度随机字符
         * 
         * @param length base
         * @return
         */
        public static String getRandomString(int length, String base) { // length表示生成字符串的长度
            Random random = new Random();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < length; i++) {
                int number = random.nextInt(base.length());
                sb.append(base.charAt(number));
            }
            return sb.toString();
        }
    
        /**
         * 获取随机长度随机字符
         * 
         * @param length
         * @return
         */
        public static String getRandomString(int length) { // length表示生成字符串的长度
            String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            Random random = new Random();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < length; i++) {
                int number = random.nextInt(base.length());
                sb.append(base.charAt(number));
            }
            return sb.toString();
        }
    
        /**
         * 获取随机长度随机数字
         * 
         * @param length
         * @return
         */
        public static String getRandomNumString(int length) { // length表示生成字符串的长度
            String base = "0123456789";
            Random random = new Random();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < length; i++) {
                int number = random.nextInt(base.length());
                sb.append(base.charAt(number));
            }
            return sb.toString();
        }
    
        /**
         * 返回随机数组
         * 
         * @param start 开始值
         * @param end 结束值
         * @return
         */
        public static int[] getRangRandom(int start, int end) {
            return getRangRandom(start, end, end - start + 1);
        }
    
        /**
         * 返回指定范围指定个数的不重复随机数。
         * 
         * @param start
         * @param end
         * @param num
         * @return
         */
        public static int[] getRangRandom(int start, int end, int num) {
    
            int length = end - start + 1;
            // 参数不合法
            if (length < 1 || num > length) {
                return null;
            } else {
                int[] numbers = new int[length];
                int[] result = new int[num];
                // 循环赋初始值
                for (int i = 0; i < length; i++) {
                    numbers[i] = i + start;
                }
                Random random = new Random();
                // 取randomMax次数
                for (int i = 0; i < num; i++) {
                    // 随机获取取数的位置
                    int m = random.nextInt(length - i) + i;
                    result[i] = numbers[m];
                    // 交换位置
                    int temp = numbers[m];
                    numbers[m] = numbers[i];
                    numbers[i] = temp;
                }
                return result;
            }
        }
    
        /*
         * 生成6位随机数验证码
         */
        public static String code() {
            Set<Integer> set = getRandomNumber();
            Iterator<Integer> iterator = set.iterator();
            String temp = "";
            while (iterator.hasNext()) {
                temp += iterator.next();
            }
            return temp;
        }
    
        public static Set<Integer> getRandomNumber() {
            Set<Integer> set = new LinkedHashSet<Integer>();
            Random random = new Random();
            while (set.size() < 6) {
                set.add(random.nextInt(10));
            }
            return set;
        }
        
        public static String[] chars = new String[] { "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", "0", "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" };
    
    
        public static String getShortUUID(int num) {
            StringBuffer shortBuffer = new StringBuffer();
            String uuid = UUID.randomUUID().toString().replace("-", "");
            for (int i = 0; i < num; i++) {
                String str = uuid.substring(i * 4, i * 4 + 4);
                int x = Integer.parseInt(str, 16);
                shortBuffer.append(chars[x % 0x3E]);
            }
            return shortBuffer.toString();
        }
        
    }
  • 相关阅读:
    SQL 07: 外连接 (左连接和右连接查询)
    010 利用多线程使socket服务端可以与多个客户端同时通讯
    056 文件修改的两种方式
    009 模拟一个简单抢票小程序代码
    055 文件的高级应用
    054 with管理文件操作上下文
    008 通过开启子进程的方式实现套接字服务端可以并发的处理多个链接以及通讯循环(用到了subprocess模块,解决粘包问题)
    053 文件的三种打开模式
    052 绝对路径和相对路径
    051 基本的文件操作
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6956636.html
Copyright © 2020-2023  润新知