這篇文章主要介紹了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)、使用一個普通的long而不是使用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中生成隨機數的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。