import java.util.Random; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.Validate; public class RandomUtil{ private static final Random DEFAULT_RANDOM = new Random(); private RandomUtil(){ //AssertionError断言错误. 但它可以避免在类的内部调用构造器. 保证该类在任何情况下都不会被实例化. throw new AssertionError(getClass().getName() + "can not be instantiated!"); } /** * 生成一个指定长度的 随机正整数 * @param length * @return * @return long * @throws */ public static long createRandomWithLength(int length){ Validate.isTrue(length > 0, "input param [length] must >0,but is [%s]", length); long num = 1; for (int i = 0; i < length; ++i){ num = num * 10; } // 该值大于等于 0.0 且小于 1.0 正号的 double 值 double random = DEFAULT_RANDOM.nextDouble(); // 可能出现 0.09346924349151808 random = random < 0.1 ? random + 0.1 : random; return (long) (random * num); } /** * 随机抽取字符串,拼接成指定长度的字符串 * 常用于生成验证码 * @param str * @param length * @return * @return String * @throws */ public static String createRandomFromString(String str,int length){ Validate.notBlank(str, "str can't be null/empty!"); Validate.isTrue(length > 0, "input param [length] must >0,but is [%s]", length); return RandomStringUtils.random(length, str); } }
转载于:https://my.oschina.net/easy3399/blog/1595154