在日常的测试开发工作中,Random类算是使用比较频繁的一个类了,有时候创建测试数据,可能需要随机生成一些姓名、年龄、号码、编号等,这个时候我们可能就会在固定的名称后面加上随机数字、字符等;下面就来看看测开常用API之Random类的使用

1、什么是Random类

  • 我们打开jdk的API文档可以看到如下解释:

    由API文档中可以看到主要信息包括:

    • 此类位于java.util包中
    • 此类的实例用于生成伪随机数

2、如何使用

1)导包:

java.util.Random

2)创建对象:

  • 查看API文档中给出的构造方法

    得到创建对象的形式:

    Random r1 = new Random();
    

3)使用:

  • 在使用前需要介绍一下常用的一个方法:nextInt,API文档描述如下:

    从这里我们可以知道nextInt有无参的方法和重载后的有参的方法,分别来看:

  • 需求1:获取5个随机的int数字(包括int范围内的所有正负值,约是负21亿到正21亿之间)

       @Testpublic void randomTest(){Random random = new Random();for (int i = 0; i < 5; i++){int num = random.nextInt();System.out.println("获得的随机数num是:" + num);}}
    

    测试结果:

    获得的随机数num是:-1432487316
    获得的随机数num是:2079302861
    获得的随机数num是:-1820450813
    获得的随机数num是:1780626063
    获得的随机数num是:1381306115Process finished with exit code 0
    

    由测试结果可以看到在int的范围内每次获取到的数字都不同,且正负均包括

  • 需求2:循环20次获取0到9之间的随机数(实际区间表现为[0,10),左边为闭区间,右边为开区间)

    @Test
    public void randomTest2(){Random random = new Random();for (int i = 0; i < 20; i++){int num = random.nextInt(10);System.out.println("获得的随机数num是:" + num);}
    }
    

    测试结果:

    获得的随机数num是:4
    获得的随机数num是:1
    获得的随机数num是:5
    获得的随机数num是:5
    获得的随机数num是:9
    获得的随机数num是:1
    获得的随机数num是:7
    获得的随机数num是:1
    获得的随机数num是:0
    获得的随机数num是:9
    获得的随机数num是:7
    获得的随机数num是:8
    获得的随机数num是:0
    获得的随机数num是:7
    获得的随机数num是:5
    获得的随机数num是:8
    获得的随机数num是:6
    获得的随机数num是:9
    获得的随机数num是:9
    获得的随机数num是:9Process finished with exit code 0
    

3、通用工具类

  • 这里提供一个平常工作中使用的用来生成随机数据的工具类:

       package com.gvbrain.appApi.Utils;import java.util.Random;public class RandomValueUtil {private static String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";private static String ALPHABET_NUMBER = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";private static String FIRST_NAME="赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯咎管卢莫经房裘缪干解应宗宣丁贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁荀羊於惠甄魏加封芮羿储靳汲邴糜松井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭厉戎祖武符刘姜詹束龙叶幸司韶郜黎蓟薄印宿白怀蒲台从鄂索咸籍赖卓蔺屠蒙池乔阴郁胥能苍双闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍却璩桑桂濮牛寿通边扈燕冀郏浦尚农温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎戈廖庚终暨居衡步都耿满弘匡国文寇广禄阙东殴殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空曾毋沙乜养鞠须丰巢关蒯相查后江红游竺权逯盖益桓公万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳淳于仲孙太叔申屠公孙乐正轩辕令狐钟离闾丘长孙慕容鲜于宇文司徒司空亓官司寇仉督子车颛孙端木巫马公西漆雕乐正壤驷公良拓拔夹谷宰父谷粱晋楚阎法汝鄢涂钦段干百里东郭南门呼延归海羊舌微生岳帅缑亢况后有琴梁丘左丘东门西门商牟佘佴伯赏南宫墨哈谯笪年爱阳佟第五言福百家姓续";private static String GIRL="秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽 ";private static String BOY="伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘";private static String[] EMAIL_SUFFIX="@gmail.com,@yahoo.com,@msn.com,@hotmail.com,@aol.com,@ask.com,@live.com,@qq.com,@0355.net,@163.com,@163.net,@263.net,@3721.net,@yeah.net,@googlemail.com,@126.com,@sina.com,@sohu.com,@yahoo.com.cn".split(",");private static String[] TEL_FIRST = ("133, 153, 177, 180,181, 189, 134, 135, 136, 137, 138, 139, 150, 151, 152, 157, 158, 159" +"178, 182, 183, 184, 187, 188, 130, 131, 132, 155, 156, 176, 185, 186" +"145, 147, 170").split(",");Random random = new Random();/*** 得到从start到end之间的随机数* @param start 随机数区间最大值* @param end 随机数区间最小值* @return*/public static int getNum(int start,int end) {return (int)(Math.random()*(end-start+1)+start);}/*** 获取区间段内的随机年龄* @param start* @param end* @return*/public static int getRandomAge(int start,int end){return getNum(start,end);}/*** 获取随机的英文字母组合,大小写随机* @param num 组合中需要的英文字母个数* @return*/public String getRandomAlphabet(Integer num){String randomAlphabet = "";char[] c = ALPHABET.toCharArray();for( int i = 0; i < num; i ++) {randomAlphabet +=  c[random.nextInt(c.length)];}return randomAlphabet;}/*** 获得随机姓名* @return*/public String getRandomName(){char firstName = FIRST_NAME.toCharArray()[random.nextInt(FIRST_NAME.toCharArray().length)];String lastName;int sex = random.nextInt(2);if (sex == 0){lastName = getGirlName();}else {lastName = getBOYlName();}String randomName = firstName + lastName;return randomName;}private String getGirlName(){String lastName = "";int num = getNum(1,2);//随机获取2字姓名和3字姓名if (num == 1){lastName = String.valueOf(GIRL.charAt(random.nextInt(GIRL.toCharArray().length)));}else if (num == 2){for (int i = 0; i < 2; i++){lastName += GIRL.charAt(random.nextInt(GIRL.toCharArray().length));}}return lastName;}private String getBOYlName(){String lastName = "";int num = getNum(1,2);//随机获取2字姓名和3字姓名if (num == 1){lastName = String.valueOf(BOY.charAt(random.nextInt(BOY.toCharArray().length)));}else if (num == 2){for (int i = 0; i < 2; i++){lastName += BOY.charAt(random.nextInt(BOY.toCharArray().length));}}return lastName;}/*** 获取随机的手机号码* @return*/public String getRandomPhoneNumber(){//获取随机的号码开头String firstNum = TEL_FIRST[random.nextInt(TEL_FIRST.length)];//获取剩余8位的号码随机数String remainingNum = String.valueOf(getNum(0,99999999)+100000000).substring(1);return firstNum + remainingNum;}/*** 获取随机的email,前缀后缀分别获取后组合成随机email* @param num 自定义前缀的位数* @return*/public String getRandomEmail(Integer num){//获取随机的email前缀,自定义前缀长度String firstPart = "";char[] c = ALPHABET_NUMBER.toCharArray();for (int i = 0; i < num; i++){firstPart += c[random.nextInt(c.length)];}//获取随机email后缀String secondPart = EMAIL_SUFFIX[random.nextInt(EMAIL_SUFFIX.length)];return firstPart + secondPart;}/*** 根据不同年份区间和月份,获得随机日期,以特定格式返回* @return*/public static String getRandomBirthDate(){//先随机获取年份,取1915-1971区间String year = String.valueOf(getNum(1915,1971));//再随机获取月份String month = String.valueOf(getNum(1,12) + 100).substring(1);String day;//判断月份,获取随机日期if (month.equals("02")){day = String.valueOf(getNum(1,28) + 100).substring(1);}else if (month.equals("04") || month.equals("06") || month.equals("09") || month.equals("11")){day = String.valueOf(getNum(1,30) + 100).substring(1);}else {day = String.valueOf(getNum(1,31) + 100).substring(1);}String BirthDate = year + "-" + month + "-" + day;return BirthDate;}
    }

测开基础串讲-Java基础-测开常用API之Random类相关推荐

  1. 计算机网络冲刺串讲,计算机应用基础串讲冲刺讲义(二)

    计算机应用基础串讲冲刺讲义(二) 分类:自考 | 更新时间:2016-07-07| 来源:中华网教育 9.下面列出的四项中,不属于计算机病毒特征的是 A.潜伏性 B.激发性 C.传播性 D.免疫性 1 ...

  2. JAVA猜数字小游戏(随机数Random类)

    快乐JAVA,通过不断的摸索,从C到PHP再到Python,Python再到Java-终于被我找到了属于我的本命编程语言(泪目).学起来很开心,很快乐,这种感觉就像和初恋谈恋爱一样,编程不再是写代码, ...

  3. 无线电基础串讲——从数学到电路再到通信,一文理解大学电子信息专业核心思想

    本人在学习和工作中发现,很多人并没有弄清楚频谱.滤波.变频这些基本概念,也觉得高频电路就是天书.我觉得最重要的原因是对前序所学课程没有本质的认识,没有把握住基础课程和电子信息专业的系列课程的来龙去脉. ...

  4. Java基础看jvm,JAVA基础知识|java虚拟机(JVM)

    一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...

  5. java基础知识大全,java 基础知识点汇总

    java 基础知识点汇总 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个Strin ...

  6. 大数据技术之_17_Storm学习_Storm 概述+Storm 基础知识+Storm 集群搭建+Storm 常用 API+Storm 分组策略和并发度

    大数据技术之_17_Storm学习 一 Storm 概述 1.1 离线计算是什么? 1.2 流式计算是什么? 1.3 Storm 是什么? 1.4 Storm 与 Hadoop 的区别 1.5 Sto ...

  7. Java核心类库之(常用API、字符串类、集合类、泛型)

    目录 1 常用API 1.1 Math类 1.2 System类 1.3 Object类 1.4 Objects类 1.5 Arrays类 1.6 基本类型包装类 1.6.1 Integer类概述和使 ...

  8. java繁体api_Java 之常用API(一)

    常用API 1 API概述 2 Scanner类与String类 3 StringBuilder类 NO.one API概述 1.1 API概述 API(Application Programming ...

  9. 第三次学JAVA再学不好就吃翔(part68)--Random类

    学习笔记,仅供参考,有错必纠 Random类 Random类是在java.util包下的一个类,我们使用这个类时需要导包.此类用于生成伪随机数.如果用相同的种子创建两个 Random 实例,则对每个实 ...

最新文章

  1. 干货 | 抖音漫画效果解密
  2. dede修改mysql,Dedecms(织梦)程序MySQL修复表和文章路径修改方法
  3. uiautomator 代码记录 :BT接收测试
  4. javascript中两个等号和三个等号的区别
  5. nessus rpm 安装_CentOS8.0下查看已安装的软件位置
  6. DAX/PowerBI系列 - 参数表(Parameter Table) - 大客户分析(Top N)
  7. 笔试题目:定义一个类不能被继承,且只能被实例化3次 .
  8. Luogu2564 [SCOI2009]生日礼物
  9. 去重查询_花生AI论文去重V1.5更新永久免费
  10. MySQL5.7官网参考手册路径
  11. word整个表格首行缩进_Word段落首行无法缩进、不能输入空格与表格首行缩进的解决方法...
  12. 邓俊辉《数据结构》-列表学习笔记
  13. redis当中各种数据类型的操作
  14. 快手财报,广告、直播、电商齐头并进
  15. (六)Python查询12306余票:升级版-----图形化界面代码
  16. OFDM中preamble的短训练序列和长训练序列作用
  17. FPGA 处理视频SDRAM带宽计算(四画面视频分割器 4K@30输出)
  18. 一位互联网老兵曲曲折折的 16 年!
  19. druid获取加密后的密码串
  20. Cannot find name ‘require‘. Do you need to install type definitions for node?

热门文章

  1. 1_11_4 23 python基础学习
  2. 半导体显示丨三星显示器拟投资逾21.5亿美元抢占OLED电视面板市场
  3. 云脉H5文档识别的性能评估指标
  4. uint8_t图像数据类型介绍
  5. unity使用Sprite Editor图片切割功能减少性能损耗
  6. 安装lux:推荐一款网页视频下载工具。并简单使用。(win)
  7. python创建类的两个对象_Python为一个类创建多个对象
  8. Python爬虫的数据提取,一篇博客就搞定啦!
  9. 网站使用国外服务器越来越卡、越来越慢的原因
  10. hol中心化服务器,存储在传统的中心化服务器