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

发布时间 - 2026-01-10 23:12:28    点击率:

核心代码

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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 佛山网站制作系统,佛山企业变更地址网上办理步骤?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何快速完成中国万网建站详细流程?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Swift中switch语句区间和元组模式匹配  网页设计与网站制作内容,怎样注册网站?  如何挑选优质建站一级代理提升网站排名?  Python3.6正式版新特性预览  SQL查询语句优化的实用方法总结  如何挑选高效建站主机与优质域名?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel如何使用查询构建器?(Query Builder高级用法)  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Android中AutoCompleteTextView自动提示  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel Session怎么存储_Laravel Session驱动配置详解  如何在宝塔面板创建新站点?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  javascript基本数据类型及类型检测常用方法小结  网站图片在线制作软件,怎么在图片上做链接?  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何批量查询域名的建站时间记录?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何在VPS电脑上快速搭建网站?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel怎么使用artisan命令缓存配置和视图  java ZXing生成二维码及条码实例分享  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  如何登录建站主机?访问步骤全解析  Bootstrap整体框架之JavaScript插件架构  Laravel distinct去重查询_Laravel Eloquent去重方法  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  香港服务器如何优化才能显著提升网站加载速度?  Laravel如何自定义错误页面(404, 500)?(代码示例)  使用豆包 AI 辅助进行简单网页 HTML 结构设计  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Win11怎么设置默认图片查看器_Windows11照片应用关联设置