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

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

