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

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

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

一、前言

本文基于JDK1.8

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

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

  List<Integer> list=new ArrayList<>();
        //記錄計算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計算的總值
        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次之間會出現(xiàn)重復(fù).

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

 List<Integer> list=new ArrayList<>();
        //記錄計算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計算的總值
        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()的底層實現(xiàn))

 public static void main(String[] args) {
        List<Integer> list=new ArrayList<>();
        //記錄計算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計算的總值
        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<>();
        //記錄計算次數(shù)
        Long count=0L;
        //記錄循環(huán)次數(shù)
        double a=0.0;
        //記錄多次計算的總值
        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é)果

在這里插入圖片描述

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

    MyBatis是一個優(yōu)秀的持久層框架,它對jdbc的操作數(shù)據(jù)庫的過程進(jìn)行封裝,使開發(fā)者只需要關(guān)注SQL本身,而不需要花費精力去處理例如注冊驅(qū)動、創(chuàng)建connection、創(chuàng)建statement、手動設(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項目中application.yml和bootstrap.yml文件的區(qū)別及說明

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

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

    Intellij?IDEA如何查看所有斷點

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

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

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

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

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

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

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

    IDEA集成MyBatis Generator插件的使用

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

最新評論

铜陵市| 正安县| 铅山县| 读书| 兰考县| 昆明市| 石景山区| 德江县| 若尔盖县| 惠来县| 浦东新区| 新邵县| 河源市| 项城市| 池州市| 田阳县| 元谋县| 耒阳市| 唐海县| 大姚县| 昌黎县| 长阳| 安徽省| 望城县| 桂平市| 磴口县| 资中县| 罗山县| 安新县| 马鞍山市| 临沂市| 高要市| 莱阳市| 汉中市| 抚州市| 沽源县| 若羌县| 弥勒县| 黄山市| 遂川县| 萝北县|