欧美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類對象的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) {
        //測試一下生成隨機(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對象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:" + numDouble2);//不知道邊界情況,沒人說過,只說之間。不管了,反正都用Math類
            System.out.println("Random對象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:"  + numInt2 + "," + numInt3);
            System.out.println("Random對象的參數(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對象生成的隨機(jī)浮點(diǎn)數(shù)" + numDouble3 + "," + numDouble4);//因?yàn)榉N子相同,所以生成的數(shù)也相同
            System.out.println("參數(shù)10的Random對象生成的隨機(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對象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:0.6315568322991557
Random對象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:73848388,929911462
Random對象的參數(shù)構(gòu)造[0,4):0,0
--------------------------------------
參數(shù)10的Random對象生成的隨機(jī)浮點(diǎn)數(shù):0.7304302967434272,0.7304302967434272
參數(shù)10的Random對象生成的隨機(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對象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:0.7790519044760864
Random對象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:-1185189383,-718067040
Random對象的參數(shù)構(gòu)造[0,4):2,2
--------------------------------------
參數(shù)10的Random對象生成的隨機(jī)浮點(diǎn)數(shù):0.7304302967434272,0.7304302967434272
參數(shù)10的Random對象生成的隨機(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對象的無參隨機(jī)浮點(diǎn)數(shù)[0.0,1.0]:0.36926846454559725
Random對象的無參隨機(jī)整數(shù)[-整數(shù),整數(shù)]:1829129943,120476504
Random對象的參數(shù)構(gòu)造[0,4):2,0
--------------------------------------
參數(shù)10的Random對象生成的隨機(jī)浮點(diǎn)數(shù):0.7304302967434272,0.7304302967434272
參數(shù)10的Random對象生成的隨機(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • java生成餅圖svg及JFreeChart生成svg圖表

    java生成餅圖svg及JFreeChart生成svg圖表

    java生成餅圖svg,代碼實(shí)現(xiàn)感覺有點(diǎn)復(fù)雜,個(gè)人認(rèn)為不如用JFreeChart,這篇文章主要介紹java生成餅圖svg及JFreeChart生成svg圖表,有需要的小伙伴可以參考下
    2015-08-08
  • Java中LocalDate的詳細(xì)方法舉例總結(jié)

    Java中LocalDate的詳細(xì)方法舉例總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java中LocalDate詳細(xì)方法舉例的相關(guān)資料,LocalDate主要是用來處理日期的類,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Spring IoC容器知識點(diǎn)詳解

    Spring IoC容器知識點(diǎn)詳解

    在本篇文章里小編給各位整理的是關(guān)于Spring IoC容器的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • java實(shí)現(xiàn)外賣訂餐系統(tǒng)

    java實(shí)現(xiàn)外賣訂餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)外賣訂餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • struts2過濾器和攔截器的區(qū)別分析

    struts2過濾器和攔截器的區(qū)別分析

    這篇文章主要介紹了struts2過濾器和攔截器的區(qū)別,簡單分析了struts2框架中過濾器和攔截器的概念與相關(guān)使用區(qū)別,需要的朋友可以參考下
    2016-04-04
  • 淺談java Properties類的使用基礎(chǔ)

    淺談java Properties類的使用基礎(chǔ)

    下面小編就為大家分享一篇淺談java Properties類的使用基礎(chǔ),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • springboot 配置日志 打印不出來sql的解決方法

    springboot 配置日志 打印不出來sql的解決方法

    這篇文章主要介紹了springboot 配置日志 打印不出來sql的解決方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • 基于springboot+vue實(shí)現(xiàn)垃圾分類管理系統(tǒng)

    基于springboot+vue實(shí)現(xiàn)垃圾分類管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于springboot+vue實(shí)現(xiàn)垃圾分類管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java中值傳遞的深度分析

    Java中值傳遞的深度分析

    這篇文章主要給大家介紹了關(guān)于Java中值傳遞的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringSecurity安全框架在SpringBoot框架中的使用詳解

    SpringSecurity安全框架在SpringBoot框架中的使用詳解

    在Spring?Boot框架中,Spring?Security是一個(gè)非常重要的組件,它可以幫助我們實(shí)現(xiàn)應(yīng)用程序的安全性,本文將詳細(xì)介紹Spring?Security在Spring?Boot框架中的使用,包括如何配置Spring?Security、如何實(shí)現(xiàn)身份驗(yàn)證和授權(quán)、如何防止攻擊等
    2023-06-06

最新評論