package com.hc.utils;
import java.io.UnsupportedEncodingException;
import java.time.*;
import java.util.Date;
import java.util.Random;
public class RandomUtil {
public static int genInteger(int min, int max) {
int res = (int) (Math.random() * (max - min + 1) + min);
return res;
}
public static String genEmail(int len){
String pre = genString(4, len);
String[] tmp = {"126","163","qq","gmail","hotmail"};
String suffix = tmp[genInteger(0,tmp.length-1)];
return pre+"@"+suffix+".com";
}
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;
}
public static boolean genBoolean() {
boolean res = genInteger(0, 1) == 0 ? true : false;
return res;
}
public static String genString(int type, int len) {
String res = "";
String alphab = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
switch (type) {
case 1:
for (int i = 0; i < len; i++) {
int ch = genInteger(48, 57);
res = res + (char) ch;
}
break;
case 2:
for (int i = 0; i < len; i++) {
int ch = genInteger(97, 122);
res = res + (char) ch;
}
break;
case 3://大写
for (int i = 0; i < len; i++) {
int ch = genInteger(65, 122);
res = res + ch;
}
break;
case 4://大小写
for (int i = 0; i < len; i++) {
int index = genInteger(0, 51);
if (index >= 91 && index <= 96) {
i--;
continue;
}
char ch = alphab.charAt(index);
res = res + ch;
}
break;
case 5:
for (int i = 0; i < len; i++) {
int index = genInteger(0, 51);
if ((index >= 91 && index <= 96) || (index >= 58 && index <= 64)) {
i--;
continue;
}
char ch = alphab.charAt(index);
res = res + ch;
}
break;
case 6:
for (int i = 0; i < len; i++) {
res += genRandomChineseChar();
}
break;
default:
System.out.println("输入类型错误");
}
return res;
}
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);
}
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(3);
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;
}
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])+1,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();
long digit = (long) (random * (timeMax - timeMin + 1) + timeMin);
LocalDateTime res = LocalDateTime.ofInstant(Instant.ofEpochMilli(digit), ZoneOffset.of("+8"));
return res;
}
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(genInteger(10, 99));
System.out.println(genPhoneNum());
System.out.println(genBoolean());
System.out.println(genString(1, 8));
System.out.println(genString(2, 8));
System.out.println(genString(3, 8));
System.out.println(genString(4, 8));
System.out.println(genString(5, 8));
System.out.println(genString(6, 8));
System.out.println(genChineseName());
for(int i =0;i<10;i++) {
LocalDateTime res = RandomUtil.genLocalDateTime("1999-12-12 8:28:58", "2000-12-12 11:3:22");
System.out.println(res);
System.out.println(genLocalDate("1999-9-21", "2019-9-21"));
}
}
}