首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 產生隨機數完整指南:Math.random()、Random 類與字元隨機生成三大方案

     編輯:Java 相關知識

方案一:Math.random() 靈活變體——最推薦

Math.random() 回傳 [0.0, 1.0) 的 double。通過數學轉換可得任意範圍隨機數:

  • 0~9 整數: (int)(Math.random() * 10)
  • 0~n-1 整數: (int)(Math.random() * n)
  • 指定範圍 [m, n) 整數: m + (int)(Math.random() * (n - m))
  • 指定範圍隨機偶數/奇數: 先生成整數,if (num % 2 != 0) num++(偶數)或 num--(奇數)。注意上界調整避免溢出。

優點:無需建立物件、靈活控制上下界、易封裝為工具方法。建議加入參數合法性檢查(非整數拋自訂異常)。

方案二:java.util.Random 類

Random r = new Random(); // 以當前時間為種子,重複率極低
int n = r.nextInt(10); // 0~9
  • 優點:提供 nextGaussian() 等高斯分布、nextLong() 等豐富方法。
  • 缺點:需建立物件,**只能控制上界,無法直接指定下界**;靈活性較 Math.random() 低。

適用場景:需要高斯分布等特殊分布隨機數時。

方案三:隨機字元生成

利用字元編碼連續性:

// 隨機小寫字母
char c = (char)('a' + Math.random() * ('z' - 'a' + 1));
// 通用公式:m + (int)(Math.random() * (n - m)) 對應字元碼

同理可生成大寫字母、數字、任意字元區間。

工程化建議

  1. 封裝為通用工具類,統一參數校驗與異常處理。
  2. 安全敏感場景(如驗證碼、密鑰)請使用 SecureRandom。
  3. 多執行緒高併發場景考慮 ThreadLocalRandom(Java 7+)避免競爭。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved