package com.github.looly.hutool; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.UUID; /** * 随机工具类 * @author xiaoleilu * */ public class RandomUtil { private static Random random = new Random(); /** 用于随机选的数字 */ private static final String BASE_NUMBER = "0123456789"; /** 用于随机选的字符 */ private static final String BASE_CHAR = "abcdefghijklmnopqrstuvwxyz"; /** 用于随机选的字符和数字 */ private static final String BASE_CHAR_NUMBER = BASE_CHAR + BASE_NUMBER; /** * 获得指定范围内的随机数 * @param min 最小数 * @param max 最大数 * @return 随机数 */ public static int randomInt(int min, int max) { return random.nextInt(max - min) + min; } /** * 获得随机数 * @return 随机数 */ public static int randomInt() { return random.nextInt(); } /** * 获得指定范围内的随机数 [0,limit) * @param limit 限制随机数的范围,不包括这个数 * @return 随机数 */ public static int randomInt(int limit) { return random.nextInt(limit); } /** * 随机获得列表中的元素 * @param <T> 元素类型 * @param list 列表 * @return 随机元素 */ public static <T> T randomEle(List<T> list) { return randomEle(list, list.size()); } /** * 随机获得列表中的元素 * @param <T> 元素类型 * @param list 列表 * @param limit 限制列表的前N项 * @return 随机元素 */ public static <T> T randomEle(List<T> list, int limit) { return list.get(randomInt(limit)); } /** * 随机获得列表中的一定量元素 * @param <T> 元素类型 * @param list 列表 * @param count 随机取出的个数 * @return 随机元素 */ public static <T> List<T> randomEles(List<T> list, int count) { final List<T> result = new ArrayList<T>(count); int limit = list.size(); while(--count > 0) { result.add(randomEle(list, limit)); } return result; } /** * 获得一个随机的字符串(只包含数字和字符) * * @param length 字符串的长度 * @return 随机字符串 */ public static String randomString(int length) { return randomString(BASE_CHAR_NUMBER, length); } /** * 获得一个只包含数字的字符串 * * @param length 字符串的长度 * @return 随机字符串 */ public static String randomNumbers(int length) { return randomString(BASE_NUMBER, length); } /** * 获得一个随机的字符串 * * @param baseString 随机字符选取的样本 * @param length 字符串的长度 * @return 随机字符串 */ public static String randomString(String baseString, int length) { StringBuffer sb = new StringBuffer(); if (length < 1) { length = 1; } int baseLength = baseString.length(); for (int i = 0; i < length; i++) { int number = random.nextInt(baseLength); sb.append(baseString.charAt(number)); } return sb.toString(); } /** * @return 随机UUID */ public static String randomUUID() { return UUID.randomUUID().toString(); } }