Java ArrayList如何實(shí)現(xiàn)生成不重復(fù)隨機(jī)數(shù)
在此之前我使用Java的數(shù)組實(shí)現(xiàn)了產(chǎn)生N-M之間的不重復(fù)的隨機(jī)數(shù),下面是使用數(shù)列ArrayList實(shí)現(xiàn)同樣的功能,代碼如下:
/**
* 隨機(jī)生成 N--M,N個(gè)不重復(fù)隨機(jī)數(shù) 使用ArrayList
*
* @param startRange 起始數(shù)字
* @param endRange 終止數(shù)字
* @param count 個(gè)數(shù)
*/
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;
}
這個(gè)實(shí)現(xiàn)的原理和使用數(shù)組基本一致,但是需要注意的幾點(diǎn),我這里是使用的一個(gè)返回序列,參數(shù)只有起始值、終值和個(gè)數(shù),然后定義了一個(gè)ArrayList數(shù)列,使用數(shù)列的add方法,接收每一個(gè)產(chǎn)生的隨機(jī)數(shù),并使用For循環(huán)進(jìn)行判斷是否重復(fù),如果重復(fù)外循環(huán) i -- ,但是這里需要注意的是:此時(shí)ArrayList里面已經(jīng)存放了當(dāng)前的重復(fù)的值了,所以不能只用 i --,還需要使用梳理的remove方法將此不符合條件的數(shù)移除,這里是需要注意的,如果不寫著一句,在小的范圍內(nèi)生成的隨機(jī)數(shù)很可能會(huì)出現(xiàn)死循環(huán)。
下面是成功運(yùn)行的截圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JAVA實(shí)現(xiàn)漢字轉(zhuǎn)拼音功能代碼實(shí)例
這篇文章主要介紹了JAVA實(shí)現(xiàn)漢字轉(zhuǎn)拼音功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
mybatisPlus條件構(gòu)造器常用方法小結(jié)
這篇文章主要介紹了mybatisPlus條件構(gòu)造器常用方法,首先是.select和其他條件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10
java中sleep方法和wait方法的五個(gè)區(qū)別
這篇文章主要介紹了java中sleep方法和wait方法的五個(gè)區(qū)別,sleep?方法和?wait?方法都是用來將線程進(jìn)入休眠狀態(tài),但是又有一些區(qū)別,下面我們就一起來看看吧2022-05-05
Spring MVC簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。今天先從寫一個(gè)Spring MVC的HelloWorld開始,讓我們看看如何搭建起一個(gè)Spring mvc的環(huán)境并運(yùn)行程序,感興趣的朋友一起學(xué)習(xí)吧2017-08-08
Spring+MyBatis實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離方案
本文主要介紹了Spring+MyBatis實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離方案。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01

