java生成随机数大全,中英文随机完整案例

生成指定范围的随机整数

	 /**
     * 生成指定范围的随机整数,[min,max]
     *
     * @param min 最小值
     * @param max 最大值
     * @return
     */
    public static int genInteger(Integer min, Integer max) {
        return (int) (Math.random() * (max - min + 1) + min);
    }

生成随机字符串

  /**
     * 随机字符串:1纯数字,2纯小写,3纯大写,4大小写,5数字字母混合,6汉字字符串
     *
     * @param type 类型
     * @param len  长度
     * @return
     */
    public static String genString(Integer type, Integer len) {
        String res = "";
        switch (type) {
            case 1:
                for (int i = 0; i < len; i++) {
                    res += genInteger(0, 9);
                }
                break;
            case 2:
                for (int i = 0; i < len; i++) {
                    int min = (int) 'a';
                    int max = (int) 'z';
                    int tmp = genInteger(min, max);
                    res += (char) tmp;
                }
                break;
            case 3:
                for (int i = 0; i < len; i++) {
                    int min = (int) 'A';
                    int max = (int) 'Z';
                    int tmp = genInteger(min, max);
                    res += (char) tmp;
                }
                break;
            case 4:
                for (int i = 0; i < len; i++) {
                    int min = (int) 'A';
                    int max = (int) 'z';
                    int tmp = genInteger(min, max);
                    if (tmp >= 91 && tmp <= 96) {
                        i--;
                        continue;
                    }
                    res += (char) tmp;
                }
                break;
            case 5:
                for (int i = 0; i < len; i++) {
                    int min = (int) '0';
                    int max = (int) 'z';
                    int tmp = genInteger(min, max);
                    if ((tmp >= 91 && tmp <= 96) || (tmp >= 58 && tmp <= 64)) {
                        i--;
                        continue;
                    }
                    res += (char) tmp;
                }
                break;
            case 6:
                for (int i = 0; i < len; i++) {
                    res += genRandomChineseChar();
                }
                break;

            default:
                throw new RuntimeException("类型不正确");
        }
        return res;
    }

生成一个常见的随机汉字字符

  /**
     * 随机生成一个常见的汉字字符
     *
     * @return
     */
    private static char genRandomChineseChar() {
        String str = "";
        Random random = new Random();

        int hightPos = (176 + Math.abs(random.nextInt(39)));
        int lowPos = (161 + Math.abs(random.nextInt(93)));

        byte[] b = new byte[2];
        b[0] = (Integer.valueOf(hightPos)).byteValue();
        b[1] = (Integer.valueOf(lowPos)).byteValue();

        try {
            str = new String(b, "GBK");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            System.out.println("错误");
        }
        return str.charAt(0);
    }

生成长度随机的邮箱

	/**
     * 生成长度随机的邮箱
     *
     * @return
     */
    public static String genEmail() {
        String[] emails = {"126", "163", "qq", "gmail", "hotmail", "outlook"};
        String[] suffix = {"com", "cn", "net", "org"};
        String tmp1 = genString(5, genInteger(6, 18));
        String tmp2 = emails[genInteger(0, emails.length - 1)];
        String tmp3 = suffix[genInteger(0, suffix.length - 1)];
        return tmp1 + "@" + tmp2 + "." + tmp3;
    }

生成随机电话号码

	/**
     * 随机生成电话号码
     *
     * @return
     */
    public static String genPhoneNum() {
        String[] prefix = {"132", "133", "134", "135", "136", "138", "139", "152", "154", "155", "177", "188"};
        int index = genInteger(0, prefix.length - 1);
        String res = prefix[index] + genString(1, 8);
        return res;
    }

生成一个随机boolean值

	 /**
     * 随机产生一个boolean值
     *
     * @return 返回true或false
     */
    public static boolean genBoolean() {
        boolean res = genInteger(0, 1) == 0 ? true : false;
        return res;
    }

生成随机中文名字

/**
     * 随机生成中文名字
     *
     * @return
     */
    public static String genChineseName() {
        Random random = new Random();
        String firstNames = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闵席季";
        String girl = "秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽";
        String boy = "秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽";

        int index = random.nextInt(firstNames.length() - 1);
        String name = "" + firstNames.charAt(index); // 获得一个随机的姓氏

        int i = random.nextInt(1);// 可以根据这个数设置产生的男女比例
        if (i == 2) {
            int j = random.nextInt(girl.length() - 2);
            if (j % 2 == 0) {
                name = name + girl.substring(j, j + 2);
            } else {
                name = name + girl.substring(j, j + 1);
            }
        } else {
            int j = random.nextInt(girl.length() - 2);
            if (j % 2 == 0) {
                name = name + boy.substring(j, j + 2);
            } else {
                name = name + boy.substring(j, j + 1);
            }

        }
        return name;
    }

生成指定范围内的随机日期时间

/**
     * 生成指定范围内的随机日期时间
     *
     * @param min 起始日期,比如:2000-3-3 8:28:58
     * @param max 终止日期,比如:2004-12-12 12:12:12
     * @return
     */
    public static LocalDateTime genLocalDateTime(String min, String max) {
        if (!(min.contains(" ") || min.contains("-") || min.contains(":"))) {
            throw new RuntimeException("日期参数格式不对");
        }
        if (!(max.contains(" ") || max.contains("-") || max.contains(":"))) {
            throw new RuntimeException("日期参数格式不对");
        }
        String[] mins = min.split("[ ,\\-,:]");
        String[] maxs = max.split("[ ,\\-,:]");

        LocalDateTime localDateTimeMin = LocalDateTime.of(Integer.parseInt(mins[0]), Integer.parseInt(mins[1]),
                Integer.parseInt(mins[2]), Integer.parseInt(mins[3]), Integer.parseInt(mins[4]),
                Integer.parseInt(mins[5]));
        LocalDateTime localDateTimeMax = LocalDateTime.of(Integer.parseInt(maxs[0]), Integer.parseInt(maxs[1]),
                Integer.parseInt(maxs[2]), Integer.parseInt(mins[3]), Integer.parseInt(mins[4]),
                Integer.parseInt(mins[5]));

        // 获取日期所对应的数字
        long timeMin = localDateTimeMin.toInstant(ZoneOffset.of("+8")).toEpochMilli();
        long timeMax = localDateTimeMax.toInstant(ZoneOffset.of("+8")).toEpochMilli();
        double random = Math.random(); // [0,1)
        long digit = (long) (random * (timeMax - timeMin + 1) + timeMin);
        LocalDateTime res = LocalDateTime.ofInstant(Instant.ofEpochMilli(digit), ZoneOffset.of("+8"));
        return res;
    }

生成指定范围内的随机日期

/**
     * 生成指定范围内的随机日期
     *
     * @param min 起始日期,比如:2000-3-3
     * @param max 终止日期,比如:2004-12-12
     * @return
     */
    public static LocalDate genLocalDate(String min, String max) {
        if (!min.contains("-")) {
            throw new RuntimeException("日期参数格式不对");
        }
        if (!max.contains("-")) {
            throw new RuntimeException("日期参数格式不对");
        }
        min += " 0:0:0";
        max += " 23:59:60";
        LocalDateTime res = genLocalDateTime(min, max);
        return res.toLocalDate();
    }

完整测试

 public static void main(String[] args) {
        System.out.println(genBoolean());             // 随机布尔值
        System.out.println(genInteger(1, 10));        // 随机范围整数[1,10]
        System.out.println(genString(1, 8)); // 1纯数字,8位随机数字
        System.out.println(genString(2, 8)); // 2纯小写
        System.out.println(genString(3, 8)); // 3纯大写
        System.out.println(genString(4, 8)); // 4大小写
        System.out.println(genString(5, 8)); // 5数字字母混合
        System.out.println(genString(6, 8)); // 6汉字字符串,8位随机汉字
        System.out.println(genEmail());                // 随机邮箱名称
        System.out.println(genPhoneNum());             // 随机电话
        System.out.println(genChineseName());          // 随机姓名
        System.out.println(genLocalDate("1999-9-21", "2019-9-21"));                          // 生成指定范围内的随机日期
        System.out.println(genLocalDateTime("1999-12-12 8:28:58", "2000-12-12 11:3:22"));    // 生成指定范围内的随机日期时间

        // 随机取名字
        for (int i = 0; i < 20; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.print(genChineseName() + "  ");
            }
            System.out.println();
        }
    }
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr朱墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值