Java ArrayList如何实现生成不重复随机数
在此之前我使用Java的数组实现了产生N-M之间的不重复的随机数,下面是使用数列ArrayList实现同样的功能,代码如下:
/** * 随机生成 N--M,N个不重复随机数 使用ArrayList * * @param startRange 起始数字 * @param endRange 终止数字 * @param count 个数 */ public static ArrayList<Integer> getRandom(int startRange, int endRange, int count) { ArrayList<Integer> arr = new ArrayList<>(); for (int i = 0; i < count; i++) { arr.add(((int) (Math.random() * (endRange - startRange + 1) + startRange))); for (int j = 0; j < i; j++) { if (arr.get(i) == arr.get(j)) { arr.remove(i); i--; break; } } } return arr; }
这个实现的原理和使用数组基本一致,但是需要注意的几点,我这里是使用的一个返回序列,参数只有起始值、终值和个数,然后定义了一个ArrayList数列,使用数列的add方法,接收每一个产生的随机数,并使用For循环进行判断是否重复,如果重复外循环 i -- ,但是这里需要注意的是:此时ArrayList里面已经存放了当前的重复的值了,所以不能只用 i --,还需要使用梳理的remove方法将此不符合条件的数移除,这里是需要注意的,如果不写着一句,在小的范围内生成的随机数很可能会出现死循环。
下面是成功运行的截图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
RestTemplate实现多种底层HTTP客户端类库的切换用法
这篇文章主要为大家详细的讲解了RestTemplate实现多种底层HTTP客户端类库的切换示例,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步2022-03-03java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
这篇文章主要介绍了java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解,需要的朋友可以参考下2020-02-02Sharding-Jdbc 自定义复合分片的实现(分库分表)
本文主要介绍了Sharding-Jdbc 自定义复合分片的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-07-07
最新评论