這篇文章主要介紹了Java中生成隨機(jī)數(shù)的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供雙鴨山企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為雙鴨山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。在Java中提供了三種使用一些內(nèi)置方法和類生成隨機(jī)數(shù)的方法,如下所示:
1、java.util.Random類
2、Math.random方法:可以生成double類型的隨機(jī)數(shù)。
3、ThreadLocalRandom類
下面我們就來看看具體Java是如何實(shí)現(xiàn)隨機(jī)數(shù)的生成。
1、java.util.Random類
Java 實(shí)用工具類庫中的類:java.util.Random 提供了產(chǎn)生各種類型隨機(jī)數(shù)的方法。
要使用java.util.Random類生成隨機(jī)數(shù),我們必須首先創(chuàng)建此類的實(shí)例,然后使用該實(shí)例調(diào)用nextInt(),nextDouble(),nextLong()等方法。
我們可以使用java.util.Random類隨機(jī)生成:整數(shù),浮點(diǎn)數(shù),雙精度數(shù),長(zhǎng)整數(shù),布爾運(yùn)算數(shù)等類型的隨機(jī)數(shù)。
我們可以將參數(shù)傳遞給方法,以便在要生成的數(shù)字范圍上放置上限。例如,nextInt(6)將生成0到5(包括0和5)范圍內(nèi)的數(shù)字。
// 隨機(jī)數(shù)生成 // 使用java.util.Random; import java.util.Random; public class generateRandom{ public static void main(String args[]) { // 創(chuàng)建隨機(jī)類的實(shí)例 Random rand = new Random(); // 在0到999范圍內(nèi)生成隨機(jī)整數(shù) int rand_int1 = rand.nextInt(1000); int rand_int2 = rand.nextInt(1000); // 輸出隨機(jī)整數(shù) System.out.println("隨機(jī)整數(shù): "+rand_int1); System.out.println("隨機(jī)整數(shù): "+rand_int2); // 生成隨機(jī)雙精度數(shù) double rand_dub1 = rand.nextDouble(); double rand_dub2 = rand.nextDouble(); // 輸出隨機(jī)雙精度數(shù) System.out.println("隨機(jī)雙精度數(shù): "+rand_dub1); System.out.println("隨機(jī)雙精度數(shù): "+rand_dub2); } }
運(yùn)行輸出:
2、Math.random方法
Math類包含用于執(zhí)行各種數(shù)值運(yùn)算的各種方法,例如計(jì)算取冪,對(duì)數(shù)等。這其中的一個(gè)方法:random(),可以返回帶有正號(hào)的double數(shù),值大于或等于0.0且小于1.0 ,即取值范圍是[0.0,1.0)的左閉右開區(qū)間。
random()方法返回的值是偽隨機(jī)選擇的,在[0.0,1.0)的范圍內(nèi)(近似)均勻分布。
注:它只能生成double類型的隨機(jī)數(shù)。
下面我們就通過java代碼介紹如何使用此方法產(chǎn)生隨機(jī)數(shù):
// Math.random() 生成隨機(jī)數(shù) import java.util.*; public class generateRandom { public static void main(String args[]) { // 隨機(jī)雙精度數(shù)的生成 System.out.println("隨機(jī)雙精度數(shù): " + Math.random()); System.out.println("隨機(jī)雙精度數(shù): " + Math.random()); } }
運(yùn)行結(jié)果:
3、java.util.concurrent.ThreadLocalRandom類
ThreadLocalRandom類是在java 1.7中引入的,提供并發(fā)產(chǎn)生隨機(jī)數(shù),能夠解決多個(gè)線程發(fā)生的競(jìng)爭(zhēng)爭(zhēng)奪。可以生成整數(shù),雙精度,布爾等類型的隨機(jī)數(shù)。
ThreadLocalRandom的主要實(shí)現(xiàn)細(xì)節(jié):
1)、使用一個(gè)普通的long而不是使用Random中的AtomicLong作為seed
2)、不能自己創(chuàng)建ThreadLocalRandom實(shí)例,因?yàn)樗臉?gòu)造函數(shù)是私有的,我們可以使用它的靜態(tài)方法ThreadLocalRandom.current()
3)、它是CPU緩存感知式的,使用8個(gè)long虛擬域來填充64位L1高速緩存行
下面我們就通過簡(jiǎn)單的java代碼介紹如何使用這個(gè)類生成隨機(jī)數(shù):
// 隨機(jī)數(shù)的產(chǎn)生 // 使用java.util.concurrent.ThreadLocalRandom類 import java.util.concurrent.ThreadLocalRandom; public class generateRandom { public static void main(String args[]) { // 在0到999范圍內(nèi)生成隨機(jī)整數(shù) int rand_int1 = ThreadLocalRandom.current().nextInt(); int rand_int2 = ThreadLocalRandom.current().nextInt(); // 輸出隨機(jī)整數(shù) System.out.println("Random Integers: " + rand_int1); System.out.println("Random Integers: " + rand_int2); // 生成隨機(jī)雙精度數(shù) double rand_dub1 = ThreadLocalRandom.current().nextDouble(); double rand_dub2 = ThreadLocalRandom.current().nextDouble(); // 輸出隨機(jī)雙精度數(shù) System.out.println("Random Doubles: " + rand_dub1); System.out.println("Random Doubles: " + rand_dub2); // 生成隨機(jī)布爾值 boolean rand_bool1 = ThreadLocalRandom.current().nextBoolean(); boolean rand_bool2 = ThreadLocalRandom.current().nextBoolean(); // 輸出隨機(jī)布爾值 System.out.println("Random Booleans: " + rand_bool1); System.out.println("Random Booleans: " + rand_bool2); } }
運(yùn)行輸出:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Java中生成隨機(jī)數(shù)的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!