资讯专栏INFORMATION COLUMN

【Java】随机数工具类

didikee / 3475人阅读

摘要:原本的代码当中,很多地方都有产生随机数这一项,但是都各有各的写法,十分不统一。想了想还是统一写个随机数工具类来解决,也方便后期的调用。

事件起因

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

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71396.html

相关文章

  • Java 数字数组机数工具 NumberUtils、ArrayUtils、RandomUtils

    一、NumberUtils工具类org.apache.commons.lang3.math.NumberUtils/1.NumberUtils.isNumber():判断字符串是否是数字/NumberUtils.isNumber(5.96);//结果是trueNumberUtils.isNumber(s5);//结果是falseNumberUtils.isNumber(0000000000596)...

    tianhang 评论0 收藏0
  • 图片验证码的JAVA工具

    摘要:我们平时开发时经常会遇到需要图片验证码,基础的验证码包括了数字字母甚至可能有汉字。下面我给出一个简单的工具类。验证码生成器图片的宽度。 我们平时开发时经常会遇到需要图片验证码,基础的验证码包括了数字、字母、甚至可能有汉字。下面我给出一个简单的工具类。 package com..ankang.tony.util; import java.awt.Color; import java....

    SKYZACK 评论0 收藏0
  • Java编程基础08——面向对象_构造方法&静态static

    摘要:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。概念方便在没有创建对象的情况下来进行调用方法变量。因为它的成员全部是静态的所以私有了构造方法获取随机数的方法返回带正号的值,该值大于等于 1.构造方法Constructor概述和格式(掌握) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小写也要与类名一致) b:...

    张巨伟 评论0 收藏0
  • 检测工具进阶——结合静态分析的动态分析工具论文分享

    摘要:接下来,作者从密码算法的误用着手,针对一些常量,改进了静态分析工具。具体来说,就是在的基础上做了动态分析方法和静态分析方法相结合的策略,在线记录文件,离线检测分析,使得整个工具更加完善。 ...

    canger 评论0 收藏0
  • Java 基础库:System、Runtime、Object、Math、日期、时间

    摘要:类提供方法和方法来通知系统进行垃圾回收清理系统资源,并提供了和方法来加载文件和动态链接库。返回按照标准的规定,对两个参数进行余数运算。 与用户互动 运行Java程序的参数 //Java程序入口:main()方法 public static void main(String[] args){...} public修饰符:Java类由JVM调用,为了让JVM可以自由调用这个main()方...

    darcrand 评论0 收藏0

发表评论

0条评论

didikee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<