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

Java生成的隨機(jī)數(shù)靠譜嗎?多少次會(huì)重復(fù)?

 更新時(shí)間:2021年06月10日 14:28:41   作者:LwinnerG  
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java生成的隨機(jī)數(shù)靠不靠譜展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下

一、前言

本文基于JDK1.8

最近在項(xiàng)目中碰到一個(gè)做訂單號的需求,甲方的意思是以字母開頭,后邊跟年份和6位流水號.
我第一反應(yīng)就是流水號用隨機(jī)數(shù)生成,突然就想到一個(gè)問題,Java的隨機(jī)數(shù)真的靠譜嗎?六位數(shù)大概是十萬級別,Java可以保證一萬次不重復(fù)嗎?帶著疑問,我通過三種生成隨機(jī)數(shù)的方式做了三個(gè)測試.

二、利用Math.random()生成六位隨機(jī)數(shù)測試

  List<Integer> list=new ArrayList<>();
        //記錄計(jì)算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計(jì)算的總值
        Long sum=0L;
        while (true){
            count++;
            Integer i = (int)((Math.random()*9+1)*100000);
            System.out.println("第"+count+"次,i為:"+i);
            if (list.contains(i)){
              a++;
              sum+=count;
              count=0L;
              list.clear();
              if (a>=1000){
                  System.out.println("平均:"+(double)sum/a);
                  break;
              }
            }else{
                list.add(i);
            }
        }

運(yùn)行結(jié)果如下:

在這里插入圖片描述

多次運(yùn)行結(jié)果大概就是在取1100~1300次之間會(huì)出現(xiàn)重復(fù).

三、利用new Random().nextInt(999999)生成隨機(jī)數(shù)

 List<Integer> list=new ArrayList<>();
        //記錄計(jì)算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計(jì)算的總值
        Long sum=0L;
        while (true){
            count++;
            Integer i = new Random().nextInt(999999);
            while (i<100000){
                i=i*10;
            }
            System.out.println("第"+count+"次,i為:"+i);
            if (list.contains(i)){
              a++;
              sum+=count;
              count=0L;
              list.clear();
              if (a>=1000){
                  System.out.println("平均:"+(double)sum/a);
                  break;
              }
            }else{
                list.add(i);
            }
        }

運(yùn)行結(jié)果:

在這里插入圖片描述

多次運(yùn)行結(jié)果大概也是1100~1300次之間重復(fù)

四、利用ThreadLocalRandom.current().nextInt(100000,999999)生成隨機(jī)數(shù)

(該方法也是hutool工具RandomUtil.random()的底層實(shí)現(xiàn))

 public static void main(String[] args) {
        List<Integer> list=new ArrayList<>();
        //記錄計(jì)算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計(jì)算的總值
        Long sum=0L;
        while (true){
            count++;
            Integer i = ThreadLocalRandom.current().nextInt(100000,999999);
            System.out.println("第"+count+"次,i為:"+i);
            if (list.contains(i)){
              a++;
              sum+=count;
              count=0L;
              list.clear();
              if (a>=1000){
                  System.out.println("平均:"+(double)sum/a);
                  break;
              }
            }else{
                list.add(i);
            }
        }
    }

運(yùn)行結(jié)果:

在這里插入圖片描述

平均次數(shù)也是1100~1300次之間重復(fù),

五、在2的基礎(chǔ)上做了新的隨機(jī)

     List<Integer> list=new ArrayList<>();
        //記錄計(jì)算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計(jì)算的總值
        Long sum=0L;
        while (true){
            count++;
            Integer i = new Random().nextInt(999999);
            while (i<100000){
                i=Integer.parseInt(String.valueOf(i)+String.valueOf(new Random().nextInt(10)));
            }
            System.out.println("第"+count+"次,i為:"+i);
            if (list.contains(i)){
              a++;
              sum+=count;
              count=0L;
              list.clear();
              if (a>=1000){
                  System.out.println("平均:"+(double)sum/a);
                  break;
              }
            }else{
                list.add(i);
            }
        }

運(yùn)行結(jié)果

在這里插入圖片描述

依然也是一千多次就會(huì)重復(fù)

由此暫時(shí)得出結(jié)論,以上的三(四)種生成隨機(jī)數(shù)方法并不能達(dá)到萬次不重復(fù),大概在一千多次時(shí)就會(huì)出現(xiàn)重復(fù)的問題.

期待一個(gè)生成不重復(fù)六位隨機(jī)數(shù)的方法

到此這篇關(guān)于Java生成的隨機(jī)數(shù)靠譜嗎?會(huì)重復(fù)嗎?的文章就介紹到這了,更多相關(guān)Java隨機(jī)數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring boot系列之集成測試(推薦)

    spring boot系列之集成測試(推薦)

    這篇文章主要介紹了spring boot系列集成測試,需要的朋友可以參考下
    2018-03-03
  • 如何利用Java使用AOP實(shí)現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換

    如何利用Java使用AOP實(shí)現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換

    這篇文章主要介紹了如何利用Java使用AOP實(shí)現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換,AOP也是我們常說的面向切面編程,AOP在我們開發(fā)過程中應(yīng)用也比較多,在這里我們就基于AOP來實(shí)現(xiàn)一個(gè)數(shù)據(jù)字典轉(zhuǎn)換的案例
    2022-06-06
  • Java?Mybatis框架由淺入深全解析下篇

    Java?Mybatis框架由淺入深全解析下篇

    MyBatis是一個(gè)優(yōu)秀的持久層框架,它對jdbc的操作數(shù)據(jù)庫的過程進(jìn)行封裝,使開發(fā)者只需要關(guān)注SQL本身,而不需要花費(fèi)精力去處理例如注冊驅(qū)動(dòng)、創(chuàng)建connection、創(chuàng)建statement、手動(dòng)設(shè)置參數(shù)、結(jié)果集檢索等jdbc繁雜的過程代碼,本文將作為最終篇為大家介紹MyBatis的使用
    2022-07-07
  • Java中Integer.parseInt和Integer.valueOf區(qū)別小結(jié)

    Java中Integer.parseInt和Integer.valueOf區(qū)別小結(jié)

    在Java中,Integer.parseInt()和Integer.valueOf()都可以將字符串轉(zhuǎn)換為整數(shù)類型,那么他們有哪些區(qū)別呢,本文就來詳細(xì)的介紹一下
    2023-09-09
  • SpringBoot項(xiàng)目中application.yml和bootstrap.yml文件的區(qū)別及說明

    SpringBoot項(xiàng)目中application.yml和bootstrap.yml文件的區(qū)別及說明

    `application.yml`和`bootstrap.yml`都是Spring Boot項(xiàng)目中的配置文件,但它們在加載時(shí)機(jī)、用途、優(yōu)先級、配置來源、適用場景和是否必須存在等方面存在區(qū)別
    2025-03-03
  • Intellij?IDEA如何查看所有斷點(diǎn)

    Intellij?IDEA如何查看所有斷點(diǎn)

    這篇文章主要介紹了Intellij?IDEA如何查看所有斷點(diǎn)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 從零開始搭建springboot+springcloud+mybatis本地項(xiàng)目全過程(圖解)

    從零開始搭建springboot+springcloud+mybatis本地項(xiàng)目全過程(圖解)

    這篇文章主要介紹了從零開始搭建springboot+springcloud+mybatis本地項(xiàng)目全過程(圖解),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • MyBatis圖文并茂講解注解開發(fā)多對多查詢

    MyBatis圖文并茂講解注解開發(fā)多對多查詢

    這篇文章主要介紹了SpringBoot中Mybatis注解多對多查詢的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • String類型轉(zhuǎn)localDate,date轉(zhuǎn)localDate的實(shí)現(xiàn)代碼

    String類型轉(zhuǎn)localDate,date轉(zhuǎn)localDate的實(shí)現(xiàn)代碼

    這篇文章主要介紹了String類型轉(zhuǎn)localDate,date轉(zhuǎn)localDate的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • IDEA集成MyBatis Generator插件的使用

    IDEA集成MyBatis Generator插件的使用

    這篇文章主要介紹了IDEA集成MyBatis Generator插件的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論

百色市| 寿阳县| 五大连池市| 仲巴县| 辛集市| 墨江| 莒南县| 乌恰县| 湘西| 准格尔旗| 方正县| 大石桥市| 定襄县| 彭阳县| 肃北| 五大连池市| 浏阳市| 石嘴山市| 阳山县| 盐源县| 尤溪县| 昌平区| 独山县| 瑞丽市| 于都县| 定南县| 呼图壁县| 鹤山市| 抚州市| 东乡族自治县| 陈巴尔虎旗| 同心县| 新昌县| 昭觉县| 涞源县| 郑州市| 板桥市| 岱山县| 湄潭县| 安平县| 普陀区|