Java中如何產生隨機數?本篇文章就跟大家介紹在Java中產生隨機數的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有幫助。
在Java中提供了三種使用一些內建方法和類別來產生隨機數的方法,如下所示:
1、java.util.Random類別
2 、Math.random方法:可以產生double類型的隨機數。
3、ThreadLocalRandom類別
下面我們就來看看具體Java是如何實作隨機數的產生。
1、java.util.Random類別
Java 實用工具類別庫中的類別:java.util.Random 提供了產生各種類型隨機數的方法。
要使用java.util.Random類別產生隨機數,我們必須先建立此類的實例,然後使用該實例呼叫nextInt(),nextDouble(),nextLong()等方法。
我們可以使用java.util.Random類別隨機產生:整數,浮點數,雙精度數,長整數,布林運算數等類型的隨機數。
我們可以將參數傳遞給方法,以便在要產生的數字範圍上放置上限。例如,nextInt(6)將產生0到5(包括0和5)範圍內的數字。
// 随机数生成 // 使用java.util.Random; import java.util.Random; public class generateRandom{ public static void main(String args[]) { // 创建随机类的实例 Random rand = new Random(); // 在0到999范围内生成随机整数 int rand_int1 = rand.nextInt(1000); int rand_int2 = rand.nextInt(1000); // 输出随机整数 System.out.println("随机整数: "+rand_int1); System.out.println("随机整数: "+rand_int2); // 生成随机双精度数 double rand_dub1 = rand.nextDouble(); double rand_dub2 = rand.nextDouble(); // 输出随机双精度数 System.out.println("随机双精度数: "+rand_dub1); System.out.println("随机双精度数: "+rand_dub2); } }
運行輸出:
#2、Math.random方法
Math類別包含用於執行各種數值運算的各種方法,例如計算取冪,對數等。這其中的一個方法:random(),可以傳回帶有正號的double數,值大於或等於0.0且小於1.0 ,即取值範圍是[0.0,1.0)的左閉右開區間。
random()方法傳回的值是偽隨機選擇的,在[0.0,1.0)的範圍內(近似)均勻分佈。
註:它只能產生double類型的隨機數。
下面我們就透過java程式碼介紹如何使用此方法產生隨機數字:
// Math.random() 生成随机数 import java.util.*; public class generateRandom { public static void main(String args[]) { // 随机双精度数的生成 System.out.println("随机双精度数: " + Math.random()); System.out.println("随机双精度数: " + Math.random()); } }
運行結果:
3、java.util.concurrent.ThreadLocalRandom類別
ThreadLocalRandom類別是在java 1.7中引入的,提供並發產生隨機數,能夠解決多個執行緒發生的競爭爭奪。可以產生整數,雙精度,布林等類型的隨機數。
ThreadLocalRandom的主要實作細節:
1)、使用一個普通的長而不是使用Random中的AtomicLong作為seed
2)、不能自己建立ThreadLocalRandom實例,因為它的建構子是私有的,我們可以使用它的靜態方法ThreadLocalRandom.current()
3)、它是CPU快取感知式的,使用8個long虛擬域來填充64位元L1高速快取行
我們就透過簡單的java程式碼介紹如何使用這個類別產生隨機數字:
// 随机数的产生 // 使用java.util.concurrent.ThreadLocalRandom类 import java.util.concurrent.ThreadLocalRandom; public class generateRandom { public static void main(String args[]) { // 在0到999范围内生成随机整数 int rand_int1 = ThreadLocalRandom.current().nextInt(); int rand_int2 = ThreadLocalRandom.current().nextInt(); // 输出随机整数 System.out.println("Random Integers: " + rand_int1); System.out.println("Random Integers: " + rand_int2); // 生成随机双精度数 double rand_dub1 = ThreadLocalRandom.current().nextDouble(); double rand_dub2 = ThreadLocalRandom.current().nextDouble(); // 输出随机双精度数 System.out.println("Random Doubles: " + rand_dub1); System.out.println("Random Doubles: " + rand_dub2); // 生成随机布尔值 boolean rand_bool1 = ThreadLocalRandom.current().nextBoolean(); boolean rand_bool2 = ThreadLocalRandom.current().nextBoolean(); // 输出随机布尔值 System.out.println("Random Booleans: " + rand_bool1); System.out.println("Random Booleans: " + rand_bool2); } }
運行輸出:
##總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多相關影片教學,請造訪:Java教學!
以上是Java中如何產生隨機數的詳細內容。更多資訊請關注PHP中文網其他相關文章!