简单易用的随机数据生成器。一般用于开发和测试阶段的数据填充、模拟、仿真研究、演示等场景。可以集成到各种类型的java项目中使用。
<dependency> <groupId>com.apifan.common</groupId> <artifactId>common-random</artifactId> <version>1.0.16</version></dependency>//生成1个1~101(不含)之间的随机整数int a = NumberSource.getInstance().randomInt(1, 101);//生成8个1~101(不含)之间的随机整数int[] b = NumberSource.getInstance().randomInt(1, 101, 8);//生成1个10000000000~20000000001(不含)之间的随机长整数long c = NumberSource.getInstance().randomLong(10000000000L, 20000000001L);//生成9个10000000000~20000000001(不含)之间的随机长整数long[] d = NumberSource.getInstance().randomLong(10000000000L, 20000000001L, 9);//生成1个0.01~0.51(不含)之间的随机整数double e = NumberSource.getInstance().randomDouble(0.01D, 0.51D);//生成8个0.01~0.51(不含)之间的随机整数double[] f = NumberSource.getInstance().randomDouble(0.01D, 0.51D, 8);//生成随机百分比BigDecimal percent = NumberSource.getInstance().randomPercent();//生成1个随机汉字String i = OtherSource.getInstance().randomChinese();//生成4个随机汉字String j = OtherSource.getInstance().randomChinese(4);String idiom = OtherSource.getInstance().randomChineseIdiom();Poem p = OtherSource.getInstance().randomTangPoem();//生成1个随机中文人名(性别随机)String k = PersonInfoSource.getInstance().randomChineseName();//生成1个随机男性中文人名String k2 = PersonInfoSource.getInstance().randomMaleChineseName();//生成1个随机女性中文人名String k3 = PersonInfoSource.getInstance().randomFemaleChineseName();//生成1个随机英文人名String l = PersonInfoSource.getInstance().randomEnglishName();//姓名String name = PersonInfoSource.getInstance().randomChineseName();//头像文件保存路径String targetPath = "/home/user/picture/" + name + ".png;//使用默认的Dialog字体PersonInfoSource.getInstance().generateNamePicture(name, targetPath);//使用自定义的字体String font = "/home/user/font/SourceHanSansCN-Normal.ttf";PersonInfoSource.getInstance().generateNamePicture(name, targetPath, font);//生成1个随机的虚拟身份证号码,地区为广西壮族自治区,男性,出生日期在1990年11月11日至1999年12月12日之间LocalDate beginDate = LocalDate.of(1990,11,11);LocalDate endDate = LocalDate.of(1999,12,12); String id1 = PersonInfoSource.getInstance().randomMaleIdCard("广西壮族自治区", beginDate, endDate);//生成1个随机的虚拟身份证号码,地区为河北省,女性,出生日期在2001年1月11日至2008年2月22日之间LocalDate beginDate2 = LocalDate.of(2001,1,11);LocalDate endDate2 = LocalDate.of(2008,2,22);String id2 = PersonInfoSource.getInstance().randomFemaleIdCard("河北省", beginDate2, endDate2);//生成1个随机的虚拟身份证号码,地区为广西壮族自治区,男性,年龄为18岁String id3 = PersonInfoSource.getInstance().randomMaleIdCard("广西壮族自治区", 18);//生成1个随机的虚拟身份证号码,地区为河北省,女性,年龄为19岁String id4 = PersonInfoSource.getInstance().randomFemaleIdCard("河北省", 19);注意:
//生成1个随机虚拟VISA信用卡号码String cc1 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.Visa);//生成1个随机虚拟MasterCard信用卡号码String cc2 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.MasterCard);//生成1个随机虚拟American Express信用卡号码String cc3 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.Amex);//生成1个随机虚拟银联信用卡号码String cc4 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.UnionPay);//生成1个随机虚拟JCB信用卡号码String cc5 = PersonInfoSource.getInstance().randomCreditCardNo(CreditCardType.JCB);//生成1个随机虚拟借记卡(储蓄卡)号码String dbc = PersonInfoSource.getInstance().randomDebitCardNo();注意:
//生成1个随机中国大陆手机号String m = PersonInfoSource.getInstance().randomChineseMobile();//生成1个随机邮箱地址,后缀随机,邮箱用户名最大长度为10String n1 = InternetSource.getInstance().randomEmail(10);//生成1个随机邮箱地址,后缀为163.com,邮箱用户名最大长度为10String n2 = InternetSource.getInstance().randomEmail(10, "163.com");//生成1个随机域名,域名最大长度为16String dm = InternetSource.getInstance().randomDomain(16);//生成1个随机公网IPv4地址String pub = InternetSource.getInstance().randomPublicIpv4();//生成1个随机私有(内网)IPv4地址String prv = InternetSource.getInstance().randomPrivateIpv4();//生成1个随机ipv6地址String ipv6 = InternetSource.getInstance().randomIpV6();//生成1个随机端口号int port = InternetSource.getInstance().randomPort();//生成1个随机App名称String appName = InternetSource.getInstance().randomAppName();//生成1个随机App Bundle IDString appBundleID = InternetSource.getInstance().randomAppBundleId();//生成1个随机App版本号String appVersionCode = InternetSource.getInstance().randomAppVersionCode();//生成1个随机静态url,后缀为jpgString url = InternetSource.getInstance().randomStaticUrl("jpg");//生成1个2020年的随机日期,日期格式为yyyy-MM-ddString d1 = DateTimeSource.getInstance().randomDate(2020, "yyyy-MM-dd");//生成1个2020年1月2日之后的随机日期,日期格式为yyyy-MM-ddString d2 = DateTimeSource.getInstance().randomFutureDate(LocalDate.of(2020,1,2), "yyyy-MM-dd");//生成1个今天(基于系统时间判断)之后的随机日期,日期格式为yyyy-MM-ddString d3 = DateTimeSource.getInstance().randomFutureDate("yyyy-MM-dd");//生成1个2020年1月2日之前1年内的随机日期,日期格式为yyyy-MM-ddString d4 = DateTimeSource.getInstance().randomPastDate(LocalDate.of(2020,1,2), "yyyy-MM-dd");//生成1个今天(基于系统时间判断)之前1年内的随机日期,日期格式为yyyy-MM-ddString d5 = DateTimeSource.getInstance().randomPastDate("yyyy-MM-dd");//生成1个2020年1月2日之前10年内的随机日期,日期格式为yyyy-MM-ddString dd = DateTimeSource.getInstance().randomPastDate(LocalDate.of(2020,1,2), 3650, "yyyy-MM-dd");//生成1个2000年1月11日至2010年2月22日范围之间的随机日期,日期格式为yyyy-MM-ddLocalDate beginDate = LocalDate.of(2000,1,11);LocalDate endDate = LocalDate.of(2010,2,22);String d6 = DateTimeSource.getInstance().randomDate(beginDate, endDate, "yyyy-MM-dd");//生成过去7天范围内的随机时间LocalDateTime time1 = DateTimeSource.getInstance().randomPastTime(7);//生成未来7天范围内的随机时间LocalDateTime time2 = DateTimeSource.getInstance().randomFutureTime(7);//生成2020年2月14日当天范围内的随机时间LocalDateTime time3 = DateTimeSource.getInstance().randomTime(2020, 2, 14);//生成过去100秒范围内的随机时间LocalDateTime time4 = DateTimeSource.getInstance().randomPastTime(LocalDateTime.now(), 100);//生成未来100秒范围内的随机时间LocalDateTime time5 = DateTimeSource.getInstance().randomFutureTime(LocalDateTime.now(), 100);//生成1个当天范围内的随机时间戳long ts1 = DateTimeSource.getInstance().randomTimestamp(LocalDate.now());//生成1个2020年3月6日范围内的随机时间戳long ts2 = DateTimeSource.getInstance().randomTimestamp(LocalDate.of(2020, 3, 6));//生成1个介于2020年3月6日12:00:00至2020年3月6日12:30:00之间的随机时间戳LocalDateTime begin = LocalDateTime.of(2020, 3, 6, 12, 0, 0);LocalDateTime end = LocalDateTime.of(2020, 3, 6, 12, 30, 0);long ts3 = DateTimeSource.getInstance().randomTimestamp(begin, end);//生成1个2020年3月6日12:00:00之后180秒内的随机时间戳LocalDateTime base1 = LocalDateTime.of(2020, 3, 6, 12, 0, 0);long ts4 = DateTimeSource.getInstance().randomFutureTimestamp(base1, 180);//生成1个2020年3月7日13:00:00之前120秒内的随机时间戳LocalDateTime base2 = LocalDateTime.of(2020, 3, 7, 13, 0, 0);long ts5 = DateTimeSource.getInstance().randomPastTimestamp(base2, 120);//生成1个随机时区名称String timezone = DateTimeSource.getInstance().randomTimezoneName();//生成1个随机强密码,长度为16,无特殊字符String pwd1 = PersonInfoSource.getInstance().randomStrongPassword(16, false);//生成1个随机强密码,长度为16,有特殊字符String pwd2 = PersonInfoSource.getInstance().randomStrongPassword(16, true);//随机获取省份String prv = AreaSource.getInstance().randomProvince();//随机获取城市(省份+城市,以逗号为分隔符)String city = AreaSource.getInstance().randomCity(",");//随机获取邮编String zipCode = AreaSource.getInstance().randomZipCode();//生成1个随机中国大陆详细地址String addr = AreaSource.getInstance().randomAddress();//随机获取1个编码首字母为b的国家或地区CountryOrRegionCode code0 = AreaSource.getInstance().randomCountryOrRegionCode("b");//随机获取1个国家或地区(不限首字母)CountryOrRegionCode code1 = AreaSource.getInstance().randomCountryOrRegionCode();//随机生成1个纬度double lat = AreaSource.getInstance().randomLatitude();//随机生成1个经度double lng = AreaSource.getInstance().randomLongitude();//随机固话区号(省级行政区名称不需要包含后缀)String phoneCode = AreaSource.getInstance().randomPhoneCode("湖南");//随机固话号码(使用-作为分隔符,默认的分隔符是空格)String phoneNumber = AreaSource.getInstance().randomPhoneNumber("广东", "-");//生成1个随机中国大陆车牌号(新能源车型)String n1 = OtherSource.getInstance().randomPlateNumber(true);//生成1个随机中国大陆车牌号(非新能源车型)String n2 = OtherSource.getInstance().randomPlateNumber();//生成1个随机英文网络昵称,最大长度为8个字符String nickName = PersonInfoSource.getInstance().randomNickName(8);//生成1个随机汉字网络昵称,最大长度为8个汉字String nickName2 = PersonInfoSource.getInstance().randomChineseNickName(8);//基于随机汉字网络昵称生成1个拼音网络昵称,最大长度为4个汉字String nickName3 = PersonInfoSource.getInstance().randomPinyinNickName(4);//生成1个随机QQ号String qq = PersonInfoSource.getInstance().randomQQAccount();//生成1个随机非主流QQ网名String nickName = PersonInfoSource.getInstance().randomQQNickName();String ethnicName = OtherSource.getInstance().randomEthnicName();//随机获取学历String degree = EducationSource.getInstance().randomDegree();//随机获取本科高校名称String college = EducationSource.getInstance().randomCollege();//随机高校专业名称String majorName = EducationSource.getInstance().randomMajorName();//随机获取小学名称String primarySchoolName = EducationSource.getInstance().randomPrimarySchoolName();//随机获取小学年级String primarySchoolGrade = EducationSource.getInstance().randomPrimarySchoolGrade();//随机获取中学名称String highSchoolName = EducationSource.getInstance().randomHighSchoolName();//随机获取中学年级String highSchoolGrade = EducationSource.getInstance().randomHighSchoolGrade();//随机班级名称String className = EducationSource.getInstance().randomClassName();//随机生成1个公司名称,地区前缀为北京String companyName = OtherSource.getInstance().randomCompanyName("北京");//随机生成1个公司部门名称String department = OtherSource.getInstance().randomCompanyDepartment();//随机生成1条中文短句String sentence = OtherSource.getInstance().randomChineseSentence();//随机生成1条英文文本,包含10个单词String text = OtherSource.getInstance().randomEnglishText(10);String title = OtherSource.getInstance().randomNonsenseTitle("星期一", "下雨");String content = OtherSource.getInstance().randomNonsense("星期一", "下雨");OtherSource.getInstance().randomEconomicCategory();说明:行业分类编码和名称来自国家统计局发布的公开数据
OtherSource.getInstance().randomSocialCreditCode();//随机ISBN,返回结果需要分隔符-,格式例如:978-7-XXXX-XXXX-XString isbn1 = OtherSource.getInstance().randomISBN(true);//随机ISBN,返回结果不需要分隔符,格式例如:9787XXXXXXXXXString isbn2 = OtherSource.getInstance().randomISBN(false);//随机国际商品编码,格式例如:691XXXXXXXXXXString ean = OtherSource.getInstance().randomEAN();说明:
//随机生成1个PC User-AgentString ua1 = InternetSource.getInstance().randomPCUserAgent();//随机生成1个Android User-AgentString ua2 = InternetSource.getInstance().randomAndroidUserAgent();//随机生成1个iOS User-AgentString ua3 = InternetSource.getInstance().randomIOSUserAgent();//随机生成1个网卡MAC地址,使用:作为分隔符String mac = InternetSource.getInstance().randomMacAddress(":");//随机生成1个RGB颜色值int[] rgb = OtherSource.getInstance().randomRgbColor();//随机生成1个16进制(HEX)颜色值String hex = OtherSource.getInstance().randomHexColor();//随机股票信息(沪A+深A+创业板+科创版)String[] stock = FinancialSource.getInstance().randomStock();String stockName = stock[0];String stockCode = stock[1];//随机股票信息(港股)String[] hkStock = FinancialSource.getInstance().randomHKStock();String hkStockName = hkStock[0];String hkStockCode = hkStock[1];//随机股票信息(新三板)String[] xsbStock = FinancialSource.getInstance().randomXsbStock();String xsbStockName = xsbStock[0];String xsbStockCode = xsbStock[1];//随机股票信息(北交所)String[] bseStock = FinancialSource.getInstance().randomBseStock();String bseStockName = bseStock[0];String bseStockCode = bseStock[1];String[] fund = FinancialSource.getInstance().randomFund();String fundName = fund[0];String fundCode = fund[1];//随机生成20210201~20210228日期范围内的K线数据,起始价格为100,单日最大涨幅10%,单日最大跌幅-10%List<KChartData> kList = FinancialSource.getInstance().randomDailyKChartData(100, 0.1, -0.1, "20210201", "20210228");//随机获取一种货币信息CurrencyInfo ci = FinancialSource.getInstance().randomCurrencyInfo();//英超SportSource.getInstance().randomFootballTeam(CompetitionType.PREMIER_LEAGUE);//西甲SportSource.getInstance().randomFootballTeam(CompetitionType.LA_LIGA);//德甲SportSource.getInstance().randomFootballTeam(CompetitionType.BUNDESLIGA);//意甲SportSource.getInstance().randomFootballTeam(CompetitionType.SERIE_A);//法甲SportSource.getInstance().randomFootballTeam(CompetitionType.LIGUE_1);//荷甲SportSource.getInstance().randomFootballTeam(CompetitionType.EREDIVISIE);//CBASportSource.getInstance().randomBasketballTeam(CompetitionType.CBA);//NBASportSource.getInstance().randomBasketballTeam(CompetitionType.NBA);//(亚洲足联范围内)随机足球队名称SportSource.getInstance().randomFootballTeam(FootballConfederation.AFC);//(欧洲足联范围内)随机足球队名称SportSource.getInstance().randomFootballTeam(FootballConfederation.UEFA);//随机足球队名称(不限足球联合会)SportSource.getInstance().randomFootballTeam();访问 Wikipedia网页 可以查看完整的足球联合会列表信息。
OtherSource.getInstance().randomMobileModel();此工具类支持自定义生成符合业务需求的随机数据,示例如下:
//准备字段定义//字段name:随机姓名DataField df1 = new DataField("name", () -> PersonInfoSource.getInstance().randomChineseName());//字段birthDate:随机日期DataField df2 = new DataField("birthDate", () -> DateTimeSource.getInstance().randomPastDate("yyyy-MM-dd"));//字段salary:随机数字DataField df3 = new DataField("salary", () -> NumberSource.getInstance().randomInt(5000, 18000));List<DataField> fieldList = Lists.newArrayList(df1, df2, df3);//设置数量int total = 10;//生成JSONString json = DataUtils.generateJson(fieldList, total); //生成CSV String csv = DataUtils.generateCsv(fieldList, total); //生成SQL之前先要指定表名String tableName = "user";//生成SQL插入语句String sql = DataUtils.generateJson(fieldList, tableName, total);更多内容