Java的ArrayList实现随机生成N-M之间N个不重复的随机数

在此之前我使用Java的数组实现了产生N-M之间的不重复的随机数,下面是使用数列ArrayList实现同样的功能,代码如下:

复制代码
 1     /**
 2      * 随机生成 N--M,N个不重复随机数  使用ArrayList
 3      *
 4      * @param startRange 起始数字
 5      * @param endRange   终止数字
 6      * @param count      个数
 7      */
 8     public static ArrayList<Integer> getRandom(int startRange, int endRange, int count) {
 9         ArrayList<Integer> arr = new ArrayList<>();
10         for (int i = 0; i < count; i++) {
11             arr.add(((int) (Math.random() * (endRange - startRange + 1) + startRange)));
12             for (int j = 0; j < i; j++) {
13                 if (arr.get(i) == arr.get(j)) {
14                     arr.remove(i);
15                     i--;
16                     break;
17                 }
18             }
19         }
20         return arr;
21     }
复制代码

这个实现的原理和使用数组基本一致,但是需要注意的几点,我这里是使用的一个返回序列,参数只有起始值、终值和个数,然后定义了一个ArrayList数列,使用数列的add方法,接收每一个产生的随机数,并使用For循环进行判断是否重复,如果重复外循环 i -- ,但是这里需要注意的是:此时ArrayList里面已经存放了当前的重复的值了,所以不能只用 i --,还需要使用梳理的remove方法将此不符合条件的数移除,这里是需要注意的,如果不写着一句,在小的范围内生成的随机数很可能会出现死循环。

 

下面是成功运行的截图:

 

posted @   勤快的懒羊羊  阅读(554)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示