Random 類的使用

gongchengship發表於2024-09-29

在 Java 中,生成一個隨機的 int 值並限定其範圍在 -11 之間,可以透過 java.util.Random 類或 Math.random() 來實現。範圍 -11 包含了 -101 三個整數,所以可以生成一個從 -11 的隨機數。

方法 1:使用 java.util.Random

import java.util.Random;

public class RandomIntExample {
    public static void main(String[] args) {
        Random random = new Random();
        
        // 生成 -1 到 1 之間的隨機整數
        int randomInt = random.nextInt(3) - 1; // 生成 0 到 2,然後減去 1
        
        System.out.println("Random number between -1 and 1: " + randomInt);
    }
}

解釋:

  • random.nextInt(3) 生成的是一個 02 之間的隨機數。
  • 減去 1 後,結果範圍是 -11(即:-101)。

方法 2:使用 Math.random()

public class RandomIntExample {
    public static void main(String[] args) {
        // 生成 -1 到 1 之間的隨機整數
        int randomInt = (int) (Math.random() * 3) - 1;  // Math.random() 返回 [0, 1) 的浮點數

        System.out.println("Random number between -1 and 1: " + randomInt);
    }
}

解釋:

  • Math.random() 返回一個介於 0(含)到 1(不含)之間的 double 值。
  • Math.random() 乘以 3,結果是 0.02.999... 之間的浮點數。將其強制轉換為 int,得到的值是 02
  • 減去 1,得到的值在 -11 之間。

方法 3:使用 ThreadLocalRandom(適用於多執行緒)

ThreadLocalRandom 是一個比 Random 更高效的類,特別適合多執行緒環境。

import java.util.concurrent.ThreadLocalRandom;

public class RandomIntExample {
    public static void main(String[] args) {
        // 生成 -1 到 1 之間的隨機整數
        int randomInt = ThreadLocalRandom.current().nextInt(-1, 2); // 上限是開區間,結果範圍為 [-1, 2)

        System.out.println("Random number between -1 and 1: " + randomInt);
    }
}

解釋:

  • ThreadLocalRandom.current().nextInt(-1, 2) 生成範圍為 -11 的隨機整數,第二個引數是排除的上限(2)。

總結:

  • RandomMath.random() 是比較常用的方法,適合簡單的隨機數生成需求。
  • ThreadLocalRandom 適合多執行緒環境,且效能優於 Random

相關文章