欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaSE API實(shí)現(xiàn)生成隨機(jī)數(shù)的2種方法(Random類和Math類的Random方法)

 更新時(shí)間:2023年10月16日 09:05:54   作者:_esther_  
本文主要介紹了JavaSE API實(shí)現(xiàn)生成隨機(jī)數(shù)的2種方法,主要包括Random類和Math類的random方法都可以用來生成隨機(jī)數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下

生成隨機(jī)數(shù)的兩種方法

Random類和Math類的random方法都可以用來生成隨機(jī)數(shù)
而Math類的random方法則是基于系統(tǒng)時(shí)間的偽隨機(jī)數(shù)生成器,大于等于0.0小于1.0的隨機(jī)double值范圍[0,1)。例如: double num1 = Math.random() * 5 + 4;//范圍[4,9)
Random類是基于種子的偽隨機(jī)數(shù)生成器,有含參數(shù)和不含參數(shù)兩種構(gòu)造方式,不含參數(shù)的構(gòu)造方法每次都使用當(dāng)前系統(tǒng)時(shí)間作為種子,而含餐構(gòu)造是使用一個(gè)固定值(參數(shù)n)作為種子范圍[0,n)。例如:Random rd1 = new Random(); double num2 = rd1.nextDouble(); Random rd2 = new Random(10); double num3 = rd2.nextDouble();

Math.random() 無參調(diào)用,返回值為 double,大于等于 0.0 ,小于 1.0。范圍[0.0,1.0)

static double random?() 返回值為 double的正值,大于等于 0.0 ,小于 1.0 。

double randomDouble = Math.random(); // 生成[0,1)之間的隨機(jī)小數(shù)
int randomNumber = (int) (2 + Math.random() * 101); // 生成[2,103)之間的隨機(jī)整數(shù)

Random類對(duì)象的next()方法,可有參。從這個(gè)隨機(jī)數(shù)生成器的序列返回下一個(gè)偽隨機(jī)數(shù),均勻分布的 int值。

protected int next?(int bits) 生成下一個(gè)偽隨機(jī)數(shù)。  
boolean nextBoolean?() 從該隨機(jī)數(shù)生成器的序列返回下一個(gè)偽隨機(jī)數(shù),均勻分布的 boolean值。  
void nextBytes?(byte[] bytes) 生成隨機(jī)字節(jié)并將它們放入用戶提供的字節(jié)數(shù)組中。  
double nextDouble?() 返回下一個(gè)偽,均勻分布 double之間價(jià)值 0.0和 1.0從這個(gè)隨機(jī)數(shù)生成器的序列。  
float nextFloat?() 返回下一個(gè)偽,均勻分布 float之間價(jià)值 0.0和 1.0從這個(gè)隨機(jī)數(shù)生成器的序列。  
double nextGaussian?() 從該隨機(jī)數(shù)發(fā)生器的序列返回下一個(gè)偽隨機(jī)數(shù),高斯(“正”)分布的 double值,平均值為 0.0 ,標(biāo)準(zhǔn)偏差為 1.0 。  
int nextInt?() 從這個(gè)隨機(jī)數(shù)生成器的序列返回下一個(gè)偽隨機(jī)數(shù),均勻分布的 int值。  
int nextInt?(int bound) 返回偽隨機(jī)的,均勻分布 int值介于0(含)和指定值(不包括),從該隨機(jī)數(shù)生成器的序列繪制。  
long nextLong?() 返回下一個(gè)偽隨機(jī)數(shù),從這個(gè)隨機(jī)數(shù)發(fā)生器的序列中均勻分布 long值。 

 public static void main(String[] args) {
        //測(cè)試一下生成隨機(jī)數(shù)的兩種方法
        int i = 0;
        for (i = 0; i < 10000; i++) {
            System.out.println("=====================================");
            double numDouble1 = Math.random();
            int numInt1 = (int)(Math.random()*(10));
            System.out.println("Math.random的隨機(jī)浮點(diǎn)數(shù)[0.0,1.0):" + numDouble1);
            System.out.println("Math.random的隨機(jī)整數(shù)[0,9]" + numInt1);
            System.out.println("---------------------------------------");

            Random rd = new Random();
            double numDouble2 = rd.nextDouble();
            int numInt2 = rd.nextInt();
            int numInt3 = rd.nextInt();

            int numInt4 = rd.nextInt(4);
            int numInt5 = rd.nextInt(4);
            System.out.println("Random對(duì)象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:" + numDouble2);//不知道邊界情況,沒人說過,只說之間。不管了,反正都用Math類
            System.out.println("Random對(duì)象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:"  + numInt2 + "," + numInt3);
            System.out.println("Random對(duì)象的參數(shù)構(gòu)造[0,4):" + numInt5 + "," + numInt4);

        }
        System.out.println("執(zhí)行" + i + "次");
    }
}

Random有參構(gòu)造后,調(diào)用方法生成隨機(jī)數(shù),數(shù)完全相同

只要Random構(gòu)造的參數(shù)固定,生成的隨機(jī)數(shù)也固定,完全不隨機(jī)。不推薦使用

         System.out.println("--------------------------------------");
            Random rd1 = new Random(10);
            double numDouble3 = rd1.nextDouble();
            Random rd2 = new Random(10);
            double numDouble4 = rd2.nextDouble();
            System.out.println("參數(shù)10的Random對(duì)象生成的隨機(jī)浮點(diǎn)數(shù)" + numDouble3 + "," + numDouble4);//因?yàn)榉N子相同,所以生成的數(shù)也相同
            System.out.println("參數(shù)10的Random對(duì)象生成的隨機(jī)整數(shù)[0,5):" + numInt6 );

其中三次運(yùn)行結(jié)果

=====================================
Math.random的隨機(jī)浮點(diǎn)數(shù)[0.0,1.0):0.7142916697602802
Math.random的隨機(jī)整數(shù)[0,9]:6
---------------------------------------
Random對(duì)象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:0.6315568322991557
Random對(duì)象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:73848388,929911462
Random對(duì)象的參數(shù)構(gòu)造[0,4):0,0
--------------------------------------
參數(shù)10的Random對(duì)象生成的隨機(jī)浮點(diǎn)數(shù):0.7304302967434272,0.7304302967434272
參數(shù)10的Random對(duì)象生成的隨機(jī)整數(shù)[0,5):3
=====================================
Math.random的隨機(jī)浮點(diǎn)數(shù)[0.0,1.0):0.6622105346737387
Math.random的隨機(jī)整數(shù)[0,9]:4
---------------------------------------
Random對(duì)象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:0.7790519044760864
Random對(duì)象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:-1185189383,-718067040
Random對(duì)象的參數(shù)構(gòu)造[0,4):2,2
--------------------------------------
參數(shù)10的Random對(duì)象生成的隨機(jī)浮點(diǎn)數(shù):0.7304302967434272,0.7304302967434272
參數(shù)10的Random對(duì)象生成的隨機(jī)整數(shù)[0,5):3
=====================================
Math.random的隨機(jī)浮點(diǎn)數(shù)[0.0,1.0):0.4240920821616745
Math.random的隨機(jī)整數(shù)[0,9]:8
---------------------------------------
Random對(duì)象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:0.36926846454559725
Random對(duì)象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:1829129943,120476504
Random對(duì)象的參數(shù)構(gòu)造[0,4):2,0
--------------------------------------
參數(shù)10的Random對(duì)象生成的隨機(jī)浮點(diǎn)數(shù):0.7304302967434272,0.7304302967434272
參數(shù)10的Random對(duì)象生成的隨機(jī)整數(shù)[0,5):3

總結(jié):
1.Math.random方法明確范圍[0,1)
2.Random類無參構(gòu)造時(shí),無參調(diào)用方法生成隨機(jī)數(shù)都為該類型數(shù)的范圍,但如double為0.0~1.0之間但不清楚邊界包含情況,慎用
3.Random類有參構(gòu)造時(shí),若參數(shù)固定,不管有參還是無參調(diào)用方法得到的數(shù)都相同如

			Random rd2 = new Random(10);
            double numDouble4 = rd2.nextDouble();//循環(huán)多少次都固定產(chǎn)生0.7304302967434272
            int numInt6 = rd2.nextInt(5);//固定產(chǎn)生3

到此這篇關(guān)于JavaSE API實(shí)現(xiàn)生成隨機(jī)數(shù)的2種方法(Random類和Math類的Random方法)的文章就介紹到這了,更多相關(guān)JavaSE 生成隨機(jī)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • springboot整合minio實(shí)現(xiàn)文件存儲(chǔ)功能

    springboot整合minio實(shí)現(xiàn)文件存儲(chǔ)功能

    MinIO?是一個(gè)基于Apache?License?v2.0開源協(xié)議的對(duì)象存儲(chǔ)服務(wù),它兼容亞馬遜S3云存儲(chǔ)服務(wù)接口,非常適合于存儲(chǔ)大容量非結(jié)構(gòu)化的數(shù)據(jù),本文給大家介紹了springboot整合minio實(shí)現(xiàn)文件存儲(chǔ)功能,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • java編譯時(shí)與運(yùn)行時(shí)概念與實(shí)例詳解

    java編譯時(shí)與運(yùn)行時(shí)概念與實(shí)例詳解

    本篇文章通過實(shí)例對(duì) java程序編譯時(shí)與運(yùn)行時(shí)進(jìn)行了詳解,需要的朋友可以參考下
    2017-04-04
  • springdoc?openapi使用解決方案

    springdoc?openapi使用解決方案

    SpringDoc注解的使用,它是基于OpenAPI?3和Swagger?3的現(xiàn)代化解決方案,相較于舊版的Swagger2即SpringFox,SpringDoc提供了更簡(jiǎn)潔、更直觀的注解方式,這篇文章主要介紹了springdoc?openapi使用,需要的朋友可以參考下
    2024-04-04
  • 通過MyBatis讀取數(shù)據(jù)庫(kù)數(shù)據(jù)并提供rest接口訪問

    通過MyBatis讀取數(shù)據(jù)庫(kù)數(shù)據(jù)并提供rest接口訪問

    這篇文章主要介紹了通過MyBatis讀取數(shù)據(jù)庫(kù)數(shù)據(jù)并提供rest接口訪問 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • Java中本地緩存的4種實(shí)現(xiàn)方式總結(jié)

    Java中本地緩存的4種實(shí)現(xiàn)方式總結(jié)

    這篇文章主要介紹了Java中本地緩存的4種實(shí)現(xiàn)方式,分別是基礎(chǔ)緩存實(shí)現(xiàn)、GuavaLoadingCache、SpringBoot整合Caffeine和JetCache,通過實(shí)例代碼,詳細(xì)講解了每種緩存技術(shù)的特點(diǎn)和使用方法,需要的朋友可以參考下
    2025-04-04
  • ReentrantReadWriteLock?讀寫鎖分析總結(jié)

    ReentrantReadWriteLock?讀寫鎖分析總結(jié)

    這篇文章主要介紹了ReentrantReadWriteLock 讀寫鎖分析總結(jié),ReentranReadWriteLock中有兩把鎖,一把讀鎖,一把寫鎖,關(guān)于這兩把鎖的介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Java協(xié)程編程之Loom

    Java協(xié)程編程之Loom

    這篇文章主要介紹了Java協(xié)程編程Loom的方法,需要的朋友請(qǐng)看下文
    2021-08-08
  • 微信小程序中的openid的作用詳解

    微信小程序中的openid的作用詳解

    微信小程序作為連接用戶與服務(wù)的重要橋梁,在提升用戶體驗(yàn)方面發(fā)揮著重要作用,本文章將詳細(xì)探討openid在微信小程序中的作用及其重要性,幫助開發(fā)者更好地理解和利用這一功能,優(yōu)化應(yīng)用體驗(yàn)并增強(qiáng)安全性,感興趣的朋友一起看看吧
    2025-04-04
  • Idea2024創(chuàng)建Maven項(xiàng)目沒有src文件夾的解決步驟

    Idea2024創(chuàng)建Maven項(xiàng)目沒有src文件夾的解決步驟

    本文主要介紹了Idea2024創(chuàng)建Maven項(xiàng)目沒有src文件夾,文中通過圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • MyBatis 動(dòng)態(tài)SQL之where標(biāo)簽的使用

    MyBatis 動(dòng)態(tài)SQL之where標(biāo)簽的使用

    本文主要介紹了MyBatis 動(dòng)態(tài)SQL之where標(biāo)簽,where 標(biāo)簽主要用來簡(jiǎn)化 SQL 語句中的條件判斷,可以自動(dòng)處理 AND/OR 條件,下面就來具體介紹一下
    2024-01-01

最新評(píng)論