java.lang.Math 類提供了豐富的數學運算方法,皆為靜態方法,可直接透過類名呼叫:
public class MathDemo {
public static void main(String[] args) {
System.out.println(Math.sqrt(16)); // 平方根:4.0
System.out.println(Math.pow(2, 3)); // 次方:8.0
System.out.println(Math.round(13.64)); // 四捨五入:14
System.out.println(Math.random()); // 0.0 ~ 1.0 間的隨機 double
}
}
java.util.Random 需實例化後使用,支援指定範圍與多種資料型別:
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 6; i++) {
// 產生 0~99 的隨機整數
System.out.print(r.nextInt(100) + "\t");
}
}
}
| 特性 | Math.random() | Random 類 |
|---|---|---|
| 呼叫方式 | 靜態方法 | 實例方法 |
| 回傳型別 | double (0.0~1.0) | int, long, float, double, boolean 等 |
| 範圍控制 | 需自行計算縮放 | 直接指定上界 |
| 執行緒安全 | 是 | 是(但高併發建議用 ThreadLocalRandom) |
| 種子控制 | 不可控 | 可指定種子實現可重現序列 |
Math.random() 即可RandomThreadLocalRandom (Java 7+)SecureRandom// 指定種子,產生可重現序列(測試/除錯專用) Random seeded = new Random(12345L); // 產生 10~20 之間的隨機整數 int bounded = 10 + r.nextInt(11); // 10 + [0,10] = [10,20] // 產生高斯分佈隨機數 double gaussian = r.nextGaussian(); // 平均 0,標準差 1