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ù)移除,這里是需要注意的,如果不寫(xiě)著一句,在小的范圍內(nèi)生成的隨機(jī)數(shù)很可能會(huì)出現(xiàn)死循環(huán)。
下面是成功運(yùn)行的截圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python excel和yaml文件的讀取封裝2. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決3. python爬蟲(chóng)實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊4. Python中內(nèi)建模塊collections如何使用5. Android Studio 2.0 功能介紹6. idea重置默認(rèn)配置的方法步驟7. Android組件化和插件化開(kāi)發(fā)8. Python內(nèi)存映射文件讀寫(xiě)方式9. asp批量添加修改刪除操作示例代碼10. .net6 在中標(biāo)麒麟下的安裝和部署過(guò)程
