java的三種隨機(jī)數(shù)生成方式
隨機(jī)數(shù)的產(chǎn)生在一些代碼中很常用,也是我們必須要掌握的。而java中產(chǎn)生隨機(jī)數(shù)的方法主要有三種:
- 第一種:new Random()
- 第二種:Math.random()
- 第三種:currentTimeMillis()
第一種
第一種需要借助java.util.Random類來產(chǎn)生一個隨機(jī)數(shù)發(fā)生器,也是最常用的一種,構(gòu)造函數(shù)有兩個,Random()和Random(long seed)。第一個就是以當(dāng)前時間為默認(rèn)種子,第二個是以指定的種子值進(jìn)行。產(chǎn)生之后,借助不同的語句產(chǎn)生不同類型的數(shù)。
種子就是產(chǎn)生隨機(jī)數(shù)的第一次使用值,機(jī)制是通過一個函數(shù),將這個種子的值轉(zhuǎn)化為隨機(jī)數(shù)空間中的某一個點(diǎn)上,并且產(chǎn)生的隨機(jī)數(shù)均勻的散布在空間中。以后產(chǎn)生的隨機(jī)數(shù)都與前一個隨機(jī)數(shù)有關(guān)。以代碼為例。
public static void main(String[] args)
{
Random r = new Random(1);
for(int i=0 ; i<5 ; i++)
{
int ran1 = r.nextInt(100);
System.out.println(ran1);
}
}
在我的編譯器下產(chǎn)生的五個數(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ù)了,代碼如下。
public static void main(String[] args)
{
int max=100,min=1;
int ran2 = (int) (Math.random()*(max-min)+min);
System.out.println(ran2);
}
第三種
至于第三種方法雖然不常用,但是也是一種思路。方法返回從1970年1月1日0時0分0秒(這與UNIX系統(tǒng)有關(guān))到現(xiàn)在的一個long型的毫秒數(shù),取模之后即可得到所需范圍內(nèi)的隨機(jī)數(shù)。
public static void main(String[] args)
{
int max=100,min=1;
long randomNum = System.currentTimeMillis();
int ran3 = (int) (randomNum%(max-min)+min);
System.out.println(ran3);
}
到此這篇關(guān)于java的三種隨機(jī)數(shù)生成方式的文章就介紹到這了,更多相關(guān)java隨機(jī)數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java生成N個不重復(fù)的隨機(jī)數(shù)的三種方法總結(jié)
- 如何通過Java生成一個隨機(jī)數(shù)
- Java如何生成隨機(jī)數(shù)不了解下嗎
- Java生成隨機(jī)數(shù)之Random與ThreadLocalRandom性能比較詳解
- java并發(fā)高的情況下用ThreadLocalRandom來生成隨機(jī)數(shù)
- Java中生成隨機(jī)數(shù)的4種方式與區(qū)別詳解
- Java生成的隨機(jī)數(shù)靠譜嗎?多少次會重復(fù)?
- Java實現(xiàn)生成n個不重復(fù)的隨機(jī)數(shù)
- JAVA 16位ID生成工具類含16位不重復(fù)的隨機(jī)數(shù)數(shù)字+大小寫
- java中生成任意之間數(shù)的隨機(jī)數(shù)詳解
- JavaSE API實現(xiàn)生成隨機(jī)數(shù)的2種方法(Random類和Math類的Random方法)
相關(guān)文章
面試時必問的JVM運(yùn)行時數(shù)據(jù)區(qū)詳解
這篇文章主要介紹了JVM運(yùn)行時數(shù)據(jù)區(qū)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2021-08-08
Java使用Queryable-pageable實現(xiàn)分頁效果
這篇文章主要為大家介紹了Java如何使用Queryable-pageable從而實現(xiàn)分頁效果,文中的示例代碼簡潔易懂,感興趣的小伙伴可以動手嘗試一下2022-06-06
Spring @Value如何通過${}、#{}注入不同類型的值
這篇文章主要介紹了Spring @Value如何通過${}、#{}注入不同類型的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
Java 將List中的實體類按照某個字段進(jìn)行分組并存放至Map中操作
這篇文章主要介紹了Java 將List中的實體類按照某個字段進(jìn)行分組并存放至Map中操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Java的基本數(shù)據(jù)類型和運(yùn)算方法(必看篇)
下面小編就為大家?guī)硪黄狫ava的基本數(shù)據(jù)類型和運(yùn)算方法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
Java裝飾器設(shè)計模式_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java裝飾器設(shè)計模式的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05
JAVA重復(fù)調(diào)用接口導(dǎo)致數(shù)據(jù)不一致的問題解決
在使用JAVA進(jìn)行開發(fā)時,我們經(jīng)常會遇到要調(diào)用接口來獲取數(shù)據(jù)的情況,本文主要介紹了JAVA重復(fù)調(diào)用接口導(dǎo)致數(shù)據(jù)不一致的問題解決,具有一定的參考價值,感興趣的可以了解一下2024-01-01

