事件起因
最近大部分精力都投入到公司系统的重构上,经历了几波人之手的代码,改起来真是苦不堪言。
原本的代码当中,很多地方都有产生随机数这一项,但是都各有各的写法,十分不统一。
想了想还是统一写个随机数工具类来解决,也方便后期的调用。
实现代码
/**
* 随机数工具类
* 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中随机一个数, 返回结果为字符串
}
目前只是这些简单的随机数生成方法,后期若还有其他随机数需求,我会在此继续完善。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。