设为首页 加入收藏

TOP

Java编程:随机生成数字串
2018-10-06 21:35:07 】 浏览:93
Tags:Java 编程 随机 生成 数字

介绍两种随机生成数字串的方法,该方法生成的随机串,小概率情况下会产生重复值,因此该方法只可用于生成验证码,不可以用于生成数字串类型的主键。还有一篇关于生成不重复的数字串的文章。如有不正之处,欢迎批评指正。


方法一:效率高,但是最大可以生成 19 位数字串


    /**
    * 随机生产 factor 位的数字,最大不超过 19位,因为long的最大值为19位
    * @param factor
    * @return
    */
    public static Long randomNum(int factor){
        return new Double((Math.random() + 1) * Math.pow(10, factor - 1)).longValue();
    }


方法二:效率低于方法一,但是它可以生成任意位数的数字串,同时可以扩展为生成数组字母串,见方法三


    public static String characters = "0123456789";
    public static String randomNum1(int factor){
        StringBuilder sb = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < factor; i++) {
            // nextInt(10) = [0, 10)
            sb.append(characters.charAt(random.nextInt(10)));
        }
        return sb.toString();
    }


对方法一、方法二做了简单的测试,结果如下:方法一的效率大致为方法二的10倍,而且随着生成的字符串的长度的增加,两者的差距逐步加大。


随机生成 10 位数字串,生成 1000000 次耗时:
randomNum used 49 ms
randomNum1 used 307 ms


随机生成 19 位数字串,生成 1000000 次耗时:
randomNum used 49 ms
randomNum1 used 457 ms


随机生成 10 位数字串,生成 10000000 次耗时:
randomNum used 280 ms
randomNum1 used 2283 ms


随机生成 19 位数字串,生成 10000000 次耗时:
randomNum used 309 ms
randomNum1 used 3675 ms


方法三:生成指定位数的数字字母串


    public static String characters1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public static String randomStr(int factor){
        StringBuilder sb = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < factor; i++) {
            // nextInt(10) = [0, 10)
            sb.append(characters1.charAt(random.nextInt(36)));
        }
        return sb.toString();
    }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java编程:10进制数、62进制数进.. 下一篇Sublime Text 3编译运行并调试C、..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目