全网整合营销服务商

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

免费咨询热线: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 


相关文章: 湖北网站制作公司有哪些,湖北清能集团官网?  建站之星×万网:智能建站系统+自助建站平台一键生成  北京网站制作网页,网站升级改版需要多久?  想学网站制作怎么学,建立一个网站要花费多少?  如何在阿里云通过域名搭建网站?  如何快速搭建高效可靠的建站解决方案?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何通过可视化优化提升建站效果?  如何基于云服务器快速搭建个人网站?  广德云建站网站建设方案与建站流程优化指南  如何获取PHP WAP自助建站系统源码?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  已有域名和空间,如何快速搭建网站?  如何通过VPS建站实现广告与增值服务盈利?  如何在云服务器上快速搭建个人网站?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  建站VPS能否同时实现高效与安全翻墙?  网站制作需要会哪些技术,建立一个网站要花费多少?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何快速生成橙子建站落地页链接?  如何用好域名打造高点击率的自主建站?  建站主机无法访问?如何排查域名与服务器问题  如何选择网络建站服务器?高效建站必看指南  如何挑选优质建站一级代理提升网站排名?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  制作表格网站有哪些,线上表格怎么弄?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  深圳网站制作培训,深圳哪些招聘网站比较好?  高性价比服务器租赁——企业级配置与24小时运维服务  如何在宝塔面板中修改默认建站目录?  ,网页ppt怎么弄成自己的ppt?  建站之星如何实现网站加密操作?  C#怎么创建控制台应用 C# Console App项目创建方法  重庆市网站制作公司,重庆招聘网站哪个好?  建站之星多图banner生成与模板自定义指南  h5在线制作网站电脑版下载,h5网页制作软件?  如何通过服务器快速搭建网站?完整步骤解析  如何快速辨别茅台真假?关键步骤解析  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  建站DNS解析失败?如何正确配置域名服务器?  如何用PHP快速搭建CMS系统?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  Python路径拼接规范_跨平台处理说明【指导】  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  Bpmn 2.0的XML文件怎么画流程图  如何通过老薛主机一键快速建站? 

您的项目需求

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