Java 隨機數產生器
通過交互式程式碼範例學習如何在 Java 中產生隨機數。探索 Random.nextInt()、SecureRandom、ThreadLocalRandom 和 Math.random() 的詳細用法。
需要快速產生隨機數?
試試我們的在線隨機數產生器,無需編寫程式碼即可獲得即時結果。
Java 程式碼編輯器
通過交互式程式碼範例學習如何在 Java 中產生隨機數。探索 Random.nextInt()、SecureRandom、ThreadLocalRandom 和 Math.random() 的詳細用法。
輸出
模擬輸出(Java 在伺服器上執行)
點擊"執行程式碼"查看範例輸出
使用 java.util.Random 的基本隨機數
使用 Random.nextInt() 產生指定範圍內的隨機整數。這是 Java 中通用隨機數產生的最常用方法。
理解 Java 隨機數產生
Java 提供了多種產生隨機數的方法,每種都針對不同的用例進行了最佳化。java.util.Random 使用線性同余產生器(LCG)演演演演算法,SecureRandom 提供加密強度的隨機數,ThreadLocalRandom 為並發應用提供執行緒安全的產生,Math.random() 提供產生隨機 double 值的簡單方法。
java.util.Random
java.util.Random 提供快速的偽隨機數產生,適合模擬、遊戲和通用程式設計任務。對於基本使用是執行緒安全的。
SecureRandom
java.security.SecureRandom 使用特定平臺的演演演演算法(SHA1PRNG、NativePRNG)產生加密安全的隨機數,用於安全應用。
ThreadLocalRandom
ThreadLocalRandom 專為多執行緒應用設計,提供高效的執行緒安全隨機數產生,避免競爭和同步開銷。
Math.random()
Math.random() 是一個簡單的方法,返回 0.0 到 1.0 之間的 double 值。適合快速計算,但靈活性不如其他選項。
常見用例
遊戲和模擬
在遊戲循環中使用 Random.nextInt() 或 ThreadLocalRandom 產生隨機骰子擲骰、抽卡、敵人產生和遊戲事件。
安全和加密
使用 SecureRandom 建立安全密碼、API 密鑰、會話令牌和加密鹽,以確保加密強度的隨機性。
並發應用
在並行流和多執行緒應用中使用 ThreadLocalRandom 避免競爭並提高性能。
軟體測試
建立隨機測試資料、模糊測試輸入和邊緣情況,確保 Java 應用的健壯程式碼覆蓋和錯誤檢測。
Java 隨機數產生如何工作
Java 的 java.util.Random 類使用線性同余產生器(LCG)演演演演算法和 48 位種子。它提供了一種產生偽隨機數的簡單方法,並且是執行緒同步的。
SecureRandom 類通過使用特定平臺實現提供加密強度的隨機數。在大多數系統上,它使用作業系統的熵源或硬體隨機數產生器。
ThreadLocalRandom(Java 7 引入)專為多執行緒應用設計。它使用隔離到當前執行緒的隨機數產生器,避免同步開銷和競爭。
Java 隨機數產生專家技巧
選擇正確的 API
簡單情況使用 Random,安全相關使用 SecureRandom,並發應用使用 ThreadLocalRandom,快速原型使用 Math.random()。每種都有特定的用例。
安全場景始終使用 SecureRandom
切勿使用 Random 或 Math.random() 產生密碼、令牌或加密操作。始終使用 SecureRandom 確保強隨機性並避免可預測模式。
最佳化並發訪問
在多執行緒應用中,ThreadLocalRandom 比同步 Random 物件快得多。在並行流和並發集合中使用它。
技術規範
演演演演算法
- 線性同余產生器(Random 類)
- SHA1PRNG 或 NativePRNG(SecureRandom)
- ThreadLocalRandom(Java 7+,基於 Random)
- 偽隨機 double(Math.random())
性能特徵
- Math.random():簡單 double 最快
- ThreadLocalRandom:並發訪問最佳
- Random:通用良好,有同步開銷
- SecureRandom:由於熵收集而較慢