【Java】自定义随机数工具类

最近大部分精力都投入到公司系统的重构上,经历了几波人之手的代码,改起来真是苦不堪言。
原本的代码当中,很多地方都有产生随机数这一项,但是都各有各的写法,十分不统一。
想了想还是统一写个随机数工具类来解决,也方便后期的调用。

代码实现

/**
 * 随机数工具类
 * 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中随机一个数, 返回结果为字符串
	}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值