All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.biz.common.random.RandomUtils Maven / Gradle / Ivy

There is a newer version: 1.5.1
Show newest version
package com.biz.common.random;


import lombok.extern.slf4j.Slf4j;

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 提供各种随机数生成工具方法的类。
 * 包括生成整数、浮点数、布尔值、随机字符串等方法。
 *
 * @author francis
 * @create: 2023-04-17 17:04
 **/
@Slf4j
public final class RandomUtils {

    /**
     * 数字字符集合。
     */
    public static final String NUMBER = "0123456789";

    /**
     * 小写字母字符集合。
     */
    public static final String LOWER_CASE_CHAR = "abcdefghijklmnopqrstuvwxyz";

    /**
     * 大写字母字符集合。
     */
    public static final String UPPERCASE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    /**
     * 数字、大小写字母字符集合。
     */
    public static final String ALL_CHAR_NUMBER = LOWER_CASE_CHAR + UPPERCASE_CHAR + NUMBER;

    /**
     * 生成一个0到指定范围(end-1)的随机整数。
     *
     * @param end 随机数的上限,不包括在内。
     * @return 生成的随机整数。
     */
    public static int generateNumber(int end) {
        return getThreadLocalRandom().nextInt(end);
    }

    /**
     * 生成指定范围内的随机整数。
     *
     * @param start 随机数的下限。
     * @param end   随机数的上限,不包括在内。
     * @return 生成的随机整数。
     */
    public static int generateNumber(int start, int end) {
        return getThreadLocalRandom().nextInt(start, end);
    }

    /**
     * 生成指定范围内的随机浮点数。
     *
     * @param start 随机数的下限。
     * @param end   随机数的上限。
     * @return 生成的随机浮点数。
     */
    public static double generateDouble(double start, double end) {
        return getThreadLocalRandom().nextDouble(start, end);
    }

    /**
     * 随机生成一个布尔值。
     *
     * @return 生成的随机布尔值。
     */
    public static boolean generateBoolean() {
        return getThreadLocalRandom().nextBoolean();
    }

    /**
     * 生成一个长度为10的随机字符串,包含数字、大小写字母。
     *
     * @return 生成的随机字符串。
     */
    public static String generateStr() {
        return generateStr(10);
    }

    /**
     * 生成指定长度的随机字符串,包含数字、大小写字母。
     *
     * @param length 随机字符串的长度。
     * @return 生成的随机字符串。
     */
    public static String generateStr(int length) {
        ThreadLocalRandom random = getThreadLocalRandom();
        StringBuilder sb = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            sb.append(ALL_CHAR_NUMBER.charAt(random.nextInt(ALL_CHAR_NUMBER.length())));
        }
        return sb.toString();
    }

    /**
     * 获取一个使用SHA1PRNG算法的SecureRandom实例。
     *
     * @return SecureRandom实例。
     * @throws NoSuchAlgorithmException 如果指定的随机数生成算法不存在。
     */
    public static SecureRandom getSHA1PRNGSecureRandom() throws NoSuchAlgorithmException {
        return SecureRandom.getInstance("SHA1PRNG");
    }

    /**
     * 获取当前线程的ThreadLocalRandom实例。
     *
     * @return ThreadLocalRandom实例。
     */
    public static ThreadLocalRandom getThreadLocalRandom() {
        return ThreadLocalRandom.current();
    }

}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy