Math.random() 回傳 [0.0, 1.0) 的 double。通過數學轉換可得任意範圍隨機數:
(int)(Math.random() * 10)(int)(Math.random() * n)m + (int)(Math.random() * (n - m))if (num % 2 != 0) num++(偶數)或 num--(奇數)。注意上界調整避免溢出。優點:無需建立物件、靈活控制上下界、易封裝為工具方法。建議加入參數合法性檢查(非整數拋自訂異常)。
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)) 對應字元碼
同理可生成大寫字母、數字、任意字元區間。
SecureRandom。ThreadLocalRandom(Java 7+)避免競爭。