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

Java隨機(jī)數(shù)的5種獲得方法(非常詳細(xì)!)

 更新時(shí)間:2023年10月26日 10:30:22   作者:諾蓮爸爸  
這篇文章主要給大家介紹了關(guān)于Java隨機(jī)數(shù)的5種獲得方法,在實(shí)際開(kāi)發(fā)中產(chǎn)生隨機(jī)數(shù)的使用是很普遍的,所以在程序中進(jìn)行產(chǎn)生隨機(jī)數(shù)操作很重要,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下

1. Math.random() 靜態(tài)方法

產(chǎn)生的隨機(jī)數(shù)是 0 - 1 之間的一個(gè) double,即 0 <= random < 1

代碼:

結(jié)果:

當(dāng)調(diào)用 Math.random() 方法時(shí),自動(dòng)創(chuàng)建了一個(gè)偽隨機(jī)數(shù)生成器,實(shí)際上用的是 new java.util.Random()。當(dāng)接下來(lái)繼續(xù)調(diào)用 Math.random() 方法時(shí),就會(huì)使用這個(gè)新的偽隨機(jī)數(shù)生成器。

2. java.util.Random 工具類(lèi)

基本算法:

linear congruential pseudorandom number generator (LGC) 線性同余法偽隨機(jī)數(shù)生成器

缺點(diǎn):可預(yù)測(cè)

Random類(lèi)默認(rèn)使用當(dāng)前系統(tǒng)時(shí)鐘作為種子:

Random類(lèi)提供的方法:API

  • nextBoolean() - 返回均勻分布的 true 或者 false
  • nextBytes(byte[] bytes)
  • nextDouble() - 返回 0.0 到 1.0 之間的均勻分布的 double
  • nextFloat() - 返回 0.0 到 1.0 之間的均勻分布的 float
  • nextGaussian()- 返回 0.0 到 1.0 之間的高斯分布(即正態(tài)分布)的 double
  • nextInt() - 返回均勻分布的 int
  • nextInt(int n) - 返回 0 到 n 之間的均勻分布的 int (包括 0,不包括 n)
  • nextLong() - 返回均勻分布的 long
  • setSeed(long seed) - 設(shè)置種子

只要種子一樣,產(chǎn)生的隨機(jī)數(shù)也一樣: 因?yàn)榉N子確定,隨機(jī)數(shù)算法也確定,因此輸出是確定的!

3. java.util.concurrent.ThreadLocalRandom 工具類(lèi)

ThreadLocalRandom 是 JDK 7 之后提供,也是繼承至 java.util.Random。每一個(gè)線程有一個(gè)獨(dú)立的隨機(jī)數(shù)生成器,用于并發(fā)產(chǎn)生隨機(jī)數(shù),能夠解決多個(gè)線程發(fā)生的競(jìng)爭(zhēng)爭(zhēng)奪。效率更高!

ThreadLocalRandom 不是直接用 new 實(shí)例化,而是第一次使用其靜態(tài)方法 current() 得到 ThreadLocal<ThreadLocalRandom> 實(shí)例,然后調(diào)用 java.util.Random 類(lèi)提供的方法獲得各種隨機(jī)數(shù)。

4. java.Security.SecureRandom

也是繼承至 java.util.Random。

SecureRandom 提供加密的強(qiáng)隨機(jī)數(shù)生成器 (RNG),要求種子必須是不可預(yù)知的,產(chǎn)生非確定性輸出。SecureRandom 也提供了與實(shí)現(xiàn)無(wú)關(guān)的算法,因此,調(diào)用方(應(yīng)用程序代碼)會(huì)請(qǐng)求特定的 RNG 算法并將它傳回到該算法的 SecureRandom 對(duì)象中。

  1. 如果僅指定算法名稱(chēng),如下所示:SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
  2. 如果既指定了算法名稱(chēng)又指定了包提供程序,如下所示:SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");

5. 隨機(jī)字符串

RandomStringUtils 類(lèi)的實(shí)現(xiàn)上也是依賴(lài)了 java.util.Random 工具類(lèi):

總結(jié)

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

相關(guān)文章

  • Java redis存Map對(duì)象類(lèi)型數(shù)據(jù)的實(shí)現(xiàn)

    Java redis存Map對(duì)象類(lèi)型數(shù)據(jù)的實(shí)現(xiàn)

    本文主要介紹了Java redis存Map<String,RedisCustom>對(duì)象類(lèi)型數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 深入理解Java基礎(chǔ)中的集合框架

    深入理解Java基礎(chǔ)中的集合框架

    Java集合框架(Java Collections Framework, JCF)也稱(chēng)容器,這里可以類(lèi)比 C++中的 STL,在這里主要對(duì)如下部分進(jìn)行源碼分析,及在面試中常見(jiàn)的問(wèn)題,例如,在阿里面試常問(wèn)到的 HashMap和ConcurrentHashMap原理等等,深入源碼分析是面試中必備的技能
    2023-08-08
  • Netty分布式高性能工具類(lèi)FastThreadLocal和Recycler分析

    Netty分布式高性能工具類(lèi)FastThreadLocal和Recycler分析

    這篇文章主要為大家介紹了Netty分布式高性能工具類(lèi)FastThreadLocal和Recycler分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • idea之Recompile、Rebuild和Build之間的區(qū)別及說(shuō)明

    idea之Recompile、Rebuild和Build之間的區(qū)別及說(shuō)明

    這篇文章主要介紹了idea之Recompile、Rebuild和Build之間的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Spring Boot下如何自定義Repository中的DAO方法

    Spring Boot下如何自定義Repository中的DAO方法

    這篇文章主要介紹了Spring Boot下如何自定義Repository中的DAO方法,需要的朋友可以參考下
    2017-06-06
  • java面試try-with-resources問(wèn)題解答

    java面試try-with-resources問(wèn)題解答

    這篇文章主要介紹了java面試try-with-resources問(wèn)題解答,?這個(gè)語(yǔ)句的作用是,確保該語(yǔ)句執(zhí)行之后,關(guān)閉每一個(gè)資源,也就是說(shuō)它確保了每個(gè)資源都在生命周期結(jié)束之后被關(guān)閉
    2022-07-07
  • 實(shí)例詳解Java實(shí)現(xiàn)圖片與base64字符串之間的轉(zhuǎn)換

    實(shí)例詳解Java實(shí)現(xiàn)圖片與base64字符串之間的轉(zhuǎn)換

    這篇文章主要介紹了Java實(shí)現(xiàn)圖片與base64字符串之間的轉(zhuǎn)換實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2016-12-12
  • Java常用工具類(lèi)匯總 附示例代碼

    Java常用工具類(lèi)匯總 附示例代碼

    這篇文章主要介紹了Java常用工具類(lèi)匯總 附示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java中的MapStruct實(shí)現(xiàn)詳解

    Java中的MapStruct實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java中的MapStruct實(shí)現(xiàn)詳解,MapStruct 是一個(gè)代碼生成器,它基于約定優(yōu)先于配置的方法大大簡(jiǎn)化了 JavaBean 類(lèi)型之間映射的實(shí)現(xiàn),生成的映射代碼使用普通方法調(diào)用,需要的朋友可以參考下
    2023-11-11
  • 基于Mybatis-Plus攔截器實(shí)現(xiàn)MySQL數(shù)據(jù)加解密的示例代碼

    基于Mybatis-Plus攔截器實(shí)現(xiàn)MySQL數(shù)據(jù)加解密的示例代碼

    用戶(hù)的一些敏感數(shù)據(jù),例如手機(jī)號(hào)、郵箱、身份證等信息,在數(shù)據(jù)庫(kù)以明文存儲(chǔ)時(shí)會(huì)存在數(shù)據(jù)泄露的風(fēng)險(xiǎn),因此需要進(jìn)行加密,解密等功能,接下來(lái)本文就給大家介紹基于Mybatis-Plus攔截器實(shí)現(xiàn)MySQL數(shù)據(jù)加解密,需要的朋友可以參考下
    2023-07-07

最新評(píng)論