全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

用Java产生100个1-150间不重复数字

核心代码

import java.util.Arrays;

/**
 * 用Java产生100个1-150的数字
 */
public class RandomTest {

	public static void main(String[] args) {
		int[] resultArr = produceNum(1, 150, 100);
		for (Integer num : resultArr) {
			System.out.println(num);
		}
		
		System.out.println("+++++++++++++++++===================+++++++++++++");
		
		// 对结果数组排序后再输出
		Arrays.sort(resultArr);
		for (Integer num : resultArr) {
			System.out.println(num);
		}
	}

	/**
	 * 产生随机数字
	 * @param minNum 最小数字
	 * @param maxNum 最大数字
	 * @param numCount 产生的数字个数
	 * @return 结果数组
	 */
	public static int[] produceNum(int minNum, int maxNum, int numCount) {
		
		// 入参校验
		// 如果随机数的个数大于产生随机数的范围;或最大数小于最小数
		// 直接返回null,说明入参不符合要求
		if (numCount > (maxNum - minNum + 1) || maxNum < minNum) {
			return null;
		}
		
		// 存放结果的数组
		int[] resultArr = new int[numCount];
		
		// count 记录已产生的随机数的个数
		int count = 0;
		
		while(count < numCount) {
			
			// 产生随机数
			int num = (int) (Math.random() * (maxNum - minNum)) + minNum;
			
			// flag 定义本次产生的随机数是否已在数组中
			boolean flag = true;
			
			// 遍历数组中已产生的随机数
			for (int i=0; i<count; i++) {
				
				// 同本次产生的随机数最比较
				if (num == resultArr[i]) {
					
					// 如果已存在相同的值,则跳出for循环,继续外层的while循环,产生下一个随机数
					flag = false;
					break;
				}
			}
			
			// 如果本次产生的随机数在数组中不存在,则将该随机数存放在数组中
			if (flag) {
				resultArr[count] = num;
				
				// 数组中已产生的随机数个数加1
				count++;
			}
		}
		
		return resultArr;
	}
}

代码解读

1 int num = (int) (Math.random() * (maxNum - minNum)) + minNum;
Math.random() 产生的是0~1 之间的double类型的随机数
Math.random() * 10 便会得到 0 ~ 10 之间的随机数,转int后便是0 ~ 9;如果给 Math.random() * 10 + 1,便是1 ~ 11 之间的随机数,转int便是1 ~ 10。
这里的1 相当于程序中的最小值,11则为最大值。
这样便得到了产生随机数的 (int) (Math.random() * (maxNum - minNum)) + minNum

2 for (int i=0; i<count; i++) {
由于每次产生的num都是随机的,所以无法保证重复的问题,所以只有通过去同已经产生的存在数组中的数字去比较,相同,则重新产生,不同,则添加进数组。


# 不重复数字  # JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写  # Java查找不重复无序数组中是否存在两个数字的和为某个值  # java随机抽取指定范围不重复的数字  # Java生成唯一ID的三种方法总结  # 随机数  # 组中  # 的是  # 都是  # 放在  # 已在  # 不符合  # 便会  # 则为  # 中不  # 则将  # 得到了  # 最小值  # void  # String  # main  # produceNum  # Integer  # num  # resultArr 


相关文章: 成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何用PHP快速搭建CMS系统?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何快速查询网站的真实建站时间?  制作电商网页,电商供应链怎么做?  如何在云虚拟主机上快速搭建个人网站?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  盐城做公司网站,江苏电子版退休证办理流程?  建站org新手必看:2024最新搭建流程与模板选择技巧  如何在阿里云购买域名并搭建网站?  宝塔建站助手安装配置与建站模板使用全流程解析  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  网站制作软件有哪些,制图软件有哪些?  招贴海报怎么做,什么是海报招贴?  建站之星后台密码遗忘如何找回?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  打鱼网站制作软件,波克捕鱼官方号怎么注册?  高性价比服务器租赁——企业级配置与24小时运维服务  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  香港服务器租用费用高吗?如何避免常见误区?  成都网站制作报价公司,成都工业用气开户费用?  南宁网站建设制作定制,南宁网站建设可以定制吗?  如何获取开源自助建站系统免费下载链接?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  公司网站设计制作厂家,怎么创建自己的一个网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何在IIS中新建站点并解决端口绑定冲突?  孙琪峥织梦建站教程如何优化数据库安全?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何通过智能用户系统一键生成高效建站方案?  如何挑选高效建站主机与优质域名?  建站主机是什么?如何选择适合的建站主机?  如何通过二级域名建站提升品牌影响力?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  建站之星如何修改网站生成路径?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何通过VPS建站实现广告与增值服务盈利? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。