如何在Java中生成指定数量、指定范围内的随机数
代码问题修复说明
数量错误问题
原代码循环逻辑存在两处冗余加1操作:
- 定义ListSize时执行了
ListSize = intInput3 + 1 - 循环判断使用了
i <= ListSize
最终循环次数为输入数量 + 2,比如输入3个,实际循环5次,和输出数量异常情况吻合。
修复方式:直接使用输入的数量作为循环终止条件即可,无需额外计算ListSize。
区间错误问题
Random.nextInt(n)方法的返回值范围是[0, n),即从0开始到n-1的整数,原代码仅传入了区间长度作为入参,未叠加区间起始值,因此生成的数值永远从0开始。比如要生成5-10的数值,实际只会返回0-5的结果,和区间异常情况吻合。
修复方式:生成随机数后叠加区间起始值intInput1。
优化说明
原代码将lstNumbers.setModel(fill)放在循环内执行,每次新增元素都会触发列表刷新,可移到循环外执行,减少不必要的性能开销。额外新增fill.removeAllElements()逻辑,避免多次点击生成时累积历史结果。
修正后代码
private void jFillActionPerformed(java.awt.event.ActionEvent evt) { int intInput1 = Integer.parseInt(txtInput1.getText()); int intInput2 = Integer.parseInt(txtInput2.getText()); int intInput3 = Integer.parseInt(txtInput3.getText()); Random rnd = new Random(); // 清空历史结果 fill.removeAllElements(); for (int i = 0; i < intInput3; i++) { int RandomNumber = rnd.nextInt((intInput2 - intInput1) + 1) + intInput1; fill.addElement(RandomNumber); } // 全部生成完成后再更新列表 lstNumbers.setModel(fill); }
内容的提问来源于stack exchange,提问作者Joalize Minnaar
相关产品推荐
相关产品推荐

