最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java案例實(shí)現(xiàn)不重復(fù)的隨機(jī)數(shù)

 更新時(shí)間:2022年04月01日 11:11:06   作者:再美不及姑娘你  
這篇文章主要介紹了Java案例實(shí)現(xiàn)不重復(fù)的隨機(jī)數(shù),通過(guò)創(chuàng)建Set集合對(duì)象,可以使用HashSet也可以使用TreeSet,區(qū)別在于TreeSet是排序后的,創(chuàng)建隨機(jī)數(shù)對(duì)象,獲取一個(gè)隨機(jī)數(shù)去重等操作,需要的朋友可以參考一下

需求:獲得十個(gè)1-20的隨機(jī)數(shù),要求隨機(jī)數(shù)不能重復(fù),存儲(chǔ)到集合中并遍歷

分析:

  • 1.創(chuàng)建Set集合對(duì)象,可以使用HashSet也可以使用TreeSet,區(qū)別在于TreeSet是排序后的
  • 2.創(chuàng)建隨機(jī)數(shù)對(duì)象,獲取一個(gè)隨機(jī)數(shù)
  • 3.判斷集合長(zhǎng)度是否大于10,是停止生成、存儲(chǔ)并遍歷
  • 否:繼續(xù)生成直到長(zhǎng)度大于10停止生成、存儲(chǔ)并遍歷
  • 4.輸出

代碼:

public class SetDemo {
 ?  public static void main(String[] args) {
 ? ? ?  //創(chuàng)建Set集合對(duì)像
 ? ? ?  Set<Integer> s=new TreeSet<Integer>();
 ? ? ?  //創(chuàng)建隨機(jī)數(shù)對(duì)象
 ? ? ?  Random r=new Random();
 ? ? ?  while(s.size()<10){
 ? ? ? ? ?  int num= r.nextInt(20)+1;
 ? ? ? ? ?  s.add(num);
 ? ? ?  }
 ? ? ?  for (Integer i:s){
 ? ? ? ? ?  System.out.println(i);
 ? ? ?  }
 ?  }
}
?

補(bǔ)充:

通過(guò)單個(gè)數(shù)組簡(jiǎn)易實(shí)現(xiàn)不重復(fù)隨機(jī)數(shù)生成,先上源碼。

/**
* 獲取隨機(jī)數(shù)組
* @param 源數(shù)組
?* @param size 目標(biāo)數(shù)組大小
?* @return 隨機(jī)數(shù)組
?*/
public static int[] getRandomRes(int[] source,int size){
? ? if (source == null && size > source.length) {
? ? ? ? return;
? ? }
? ? int[] result = new int[size];
? ? Random random = new Random();
? ? for (int i = 0; i < size; i++) {
? ? ? ? int randomIndex = random.nextInt(source.length - 1 - i);
? ? ? ? int randomRes = source[randomIndex];
? ? ? ? result[i] = randomRes;
? ? ? ? int temp = source[randomIndex];
? ? ? ? source[randomIndex] = source[source.length - 1 - i];
? ? ? ? source[source.length - 1 - i] = temp;
? ? }
? ? return result;
}

下面看圖解,數(shù)字為數(shù)組的index。

黑色數(shù)字表示能隨機(jī)到的數(shù),紅色代表不能隨機(jī)到數(shù)。
因此只能隨機(jī)到index:0~4的數(shù),假設(shè)是2,然后將2與index5互換位置。

此時(shí)結(jié)果result[] = {2}

繼續(xù)循環(huán)

從前index:0~3中循環(huán),假設(shè)取出index0,與index4互換,此時(shí)結(jié)果為result = {2,0},依次類推。

優(yōu)點(diǎn):簡(jiǎn)單快捷
缺點(diǎn):每次無(wú)法取到最后一個(gè)數(shù)。

不斷隨機(jī),使用Set去重

/**
*生成隨機(jī)數(shù)組
*@param size 目標(biāo)數(shù)組大小
*@param max 目標(biāo)數(shù)最大值
*/
public Set<Integer> getRandomSet(int size,int max){
? ? Random random= new Random();
? ? Set<Integer> result= new LinkedHashSet<Integer>();
? ? while (generated.size() < size)
? ? {
? ? ? ? Integer next = rng.nextInt(max) + 1;
? ? ? ? generated.add(next);
? ? }
}

此處使用LinkedHashSet保證插入順序與結(jié)果相同。

到此這篇關(guān)于Java案例實(shí)現(xiàn)不重復(fù)的隨機(jī)數(shù)的文章就介紹到這了,更多相關(guān)Java不重復(fù)隨機(jī)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決

    Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決

    這篇文章主要介紹了Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java實(shí)現(xiàn)同步枚舉類數(shù)據(jù)到數(shù)據(jù)庫(kù)

    Java實(shí)現(xiàn)同步枚舉類數(shù)據(jù)到數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)同步枚舉類數(shù)據(jù)到數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • JAVA如何獲取jvm和操作系統(tǒng)相關(guān)信息

    JAVA如何獲取jvm和操作系統(tǒng)相關(guān)信息

    這篇文章主要介紹了JAVA獲取jvm和操作系統(tǒng)相關(guān)信息,使用Java自帶的類進(jìn)行獲取系統(tǒng)運(yùn)行的相關(guān)信息,在這整理記錄分享一下,需要的朋友可以參考下
    2022-10-10
  • kafka消費(fèi)者kafka-console-consumer接收不到數(shù)據(jù)的解決

    kafka消費(fèi)者kafka-console-consumer接收不到數(shù)據(jù)的解決

    這篇文章主要介紹了kafka消費(fèi)者kafka-console-consumer接收不到數(shù)據(jù)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 新手初學(xué)Java List 接口

    新手初學(xué)Java List 接口

    這篇文章主要介紹了Java集合操作之List接口及其實(shí)現(xiàn)方法,詳細(xì)分析了Java集合操作中List接口原理、功能、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2021-07-07
  • MyBatis+MySQL 返回插入的主鍵ID的方法

    MyBatis+MySQL 返回插入的主鍵ID的方法

    本篇文章主要介紹了MyBatis+MySQL 返回插入的主鍵ID的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • 使用Java和SNMP4J實(shí)現(xiàn)SNMP操作完整代碼

    使用Java和SNMP4J實(shí)現(xiàn)SNMP操作完整代碼

    這篇文章主要介紹了如何使用Java和SNMP4J庫(kù)進(jìn)行SNMP操作,包括初始化SNMP、創(chuàng)建目標(biāo)、創(chuàng)建PDU、發(fā)送SNMP請(qǐng)求和處理響應(yīng)等內(nèi)容,通過(guò)編寫SnmpUtil類,展示了完整的SNMP操作流程,需要的朋友可以參考下
    2024-12-12
  • Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

    Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

    讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)寵物在線商城系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • 解決idea2020.1 用gitee push推送被拒絕的原因(親測(cè)有效)

    解決idea2020.1 用gitee push推送被拒絕的原因(親測(cè)有效)

    這篇文章主要介紹了解決idea2020.1 用gitee push推送被拒絕的原因(親測(cè)有效),本文給大家分享解決方案,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java中符號(hào)@的作用及用法舉例詳解

    java中符號(hào)@的作用及用法舉例詳解

    在Java編程語(yǔ)言中,@符號(hào)被稱為注解(Annotation),下面這篇文章主要介紹了java中符號(hào)@的作用及用法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04

最新評(píng)論

福海县| 富民县| 个旧市| 白朗县| 福鼎市| 韶山市| 壤塘县| 淮滨县| 建始县| 东源县| 余姚市| 万年县| 绍兴市| 拜城县| 凭祥市| 太仆寺旗| 丽水市| 碌曲县| 临颍县| 木里| 玉林市| 平原县| 宁强县| 昌邑市| 水富县| 克山县| 金阳县| 太仓市| 宜章县| 沙田区| 杭锦后旗| 瓮安县| 渝中区| 浦县| 凤翔县| 辉南县| 北安市| 明溪县| 沂南县| 长宁区| 慈利县|