java中生成不同隨機(jī)數(shù)的三種方式

java中產(chǎn)生隨機(jī)數(shù)的方法主要有三種:

1、new Random()

2、Math.random()

3、currentTimeMillis()

第一種需要借助java.util.Random類來產(chǎn)生一個(gè)隨機(jī)數(shù)發(fā)生器,也是最常用的一種,構(gòu)造函數(shù)有兩個(gè),Random()和Random(long seed)。第一個(gè)就是以當(dāng)前時(shí)間為默認(rèn)種子,第二個(gè)是以指定的種子值進(jìn)行。產(chǎn)生之后,借助不同的語句產(chǎn)生不同類型的數(shù)。

種子就是產(chǎn)生隨機(jī)數(shù)的第一次使用值,機(jī)制是通過一個(gè)函數(shù),將這個(gè)種子的值轉(zhuǎn)化為隨機(jī)數(shù)空間中的某一個(gè)點(diǎn)上,并且產(chǎn)生的隨機(jī)數(shù)均勻的散布在空間中。以后產(chǎn)生的隨機(jī)數(shù)都與前一個(gè)隨機(jī)數(shù)有關(guān)。

例如:

publicstaticvoid main(String[] args)

{???

  Random r = newRandom(1);

  for(int i=0 ; i<5 ;? i++)

  {

    int ran1 = r.nextInt(100);

    System.out.println(ran1);

  }

}

在我的編譯器下產(chǎn)生的五個(gè)數(shù)均為85,88,47,13,54,如果采用Random r = new Random(),產(chǎn)生的隨機(jī)數(shù)就不同,這就是確定種子導(dǎo)致的結(jié)果。

第二種方法返回的數(shù)值是[0.0,1.0)的double型數(shù)值,由于double類數(shù)的精度很高,可以在一定程度下看做隨機(jī)數(shù),借助(int)來進(jìn)行類型轉(zhuǎn)換就可以得到整數(shù)隨機(jī)數(shù)了。

例如:

publicstaticvoid main(String[] args)2???? {???

int max=100,min=1;

?int ran2 = (int) (Math.random()*(max-min)+min);

System.out.println(ran2);6???? }

第三種方法雖然不常用,但是也是一種思路。方法返回從1970年1月1日0時(shí)0分0秒(這與UNIX系統(tǒng)有關(guān))到現(xiàn)在的一個(gè)long型的毫秒數(shù),取模之后即可得到所需范圍內(nèi)的隨機(jī)數(shù)。

例如:

publicstaticvoid main(String[] args)

????{???

????????int max=100,min=1;

????????long randomNum = System.currentTimeMillis();?

????????int ran3 = (int) (randomNum%(max-min)+min);?

????????System.out.println(ran3);


????}

本文來自PHP中文網(wǎng)的Java學(xué)習(xí)教程欄目:https://www.php.cn/java/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容