Java自制简单RandomUtils随机数工具类

来源:互联网 发布:金知云林秀晶 编辑:程序博客网 时间:2024/06/11 18:26

  最近忙着重构公司的系统,之前的设计模式学习什么的也先放放了。正好借着这次重构造些轮子,锻炼下自己。


  系统中很多地方都有产生随机数这一块,想了想还是统一的写个工具类来解决的好,也方便其他人调用,自己写的代码如下(还有很多需要改进的地方):

/** * 随机数工具类 * Created by zhh on 2017/08/01. */public class RandomUtils {    /**     * 生成指定区间随机数 (min, max)     * @param min   区间最小值(不包含)     * @param max   区间最大值(不包含)     * @return     */    public static int genNum(int min, int max) {        if (min >= max - 1) {            // 自行异常处理, 此时简单返回0            return 0;        }        Random random = new Random();        return random.nextInt(max - min - 1) + min + 1;    }    /**     * 生成指定区间随机数 [min, max)     * @param min   区间最小值(包含)     * @param max   区间最大值(不包含)     * @return     */    public static int genNumIncludeMin(int min, int max) {        if (min >= max) {            // 自行异常处理, 此时简单返回0            return 0;        }        Random random = new Random();        return random.nextInt(max - min) + min;    }    /**     * 生成指定区间随机数 (min, max]     * @param min   区间最小值(不包含)     * @param max   区间最大值(包含)     * @return     */    public static int genNumIncludeMax(int min, int max) {        return genNumIncludeMin(min, max) + 1;    }    /**     * 生成指定区间随机数 [min, max]     * @param min   区间最小值(包含)     * @param max   区间最大值(包含)     * @return     */    public static int genNumIncludeMinAndMax(int min, int max) {        if (min >= max + 1) {            // 自行异常处理, 此时简单返回0            return 0;        }        Random random = new Random();        return random.nextInt(max - min + 1) + min;    }    /**     * 生成指定长度随机数     * @param len   指定长度     * @return     */    public static int genNumByLen(int len) {        if (len < 1 || len > 9) {            // 自行异常处理, 此时简单返回0            return 0;        }        return Integer.valueOf(genNumStrByLen(len));    }    /**     * 生成指定长度随机数     * @param len   指定长度     * @return     */    public static String genNumStrByLen(int len) {        if (len < 1) {            // 自行异常处理, 此时简单返回"0"            return "0";        }        StringBuilder sb = new StringBuilder();        for (int i = 0; i < len; i++) {            if (i == 0) {                sb.append(genNumIncludeMax(0, 9));            } else {                sb.append(genNumIncludeMinAndMax(0, 9));            }        }        return sb.toString();    }}

  每个方法对应我都写了注释,所以这里就不再过多解释了。只是注明的异常处理的地方需要自行单独抛异常或者其他处理。
  下面写个主方法测试为例:

    public static void main(String[] args) {        System.out.println(genNum(2, 4));   // [3]        System.out.println(genNumIncludeMin(2, 4)); // [2, 3]        System.out.println(genNumIncludeMax(2, 4)); // [3, 4]        System.out.println(genNumIncludeMinAndMax(2, 4));   // [2, 3 ,4]        System.out.println(genNumByLen(3)); // [100 ~ 999]        System.out.println(genNumStrByLen(3));  // [100 ~ 999]    }

  目前只是这些简单的随机数生成方法,后期若还有其他随机数需求,我会在此继续完善。

原创粉丝点击