在 Java 中,生成一個隨機的 int
值並限定其範圍在 -1
到 1
之間,可以透過 java.util.Random
類或 Math.random()
來實現。範圍 -1
到 1
包含了 -1
、0
和 1
三個整數,所以可以生成一個從 -1
到 1
的隨機數。
方法 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)
生成的是一個0
到2
之間的隨機數。- 減去
1
後,結果範圍是-1
到1
(即:-1
、0
、1
)。
方法 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.0
到2.999...
之間的浮點數。將其強制轉換為int
,得到的值是0
到2
。 - 減去
1
,得到的值在-1
到1
之間。
方法 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)
生成範圍為-1
到1
的隨機整數,第二個引數是排除的上限(2
)。
總結:
Random
和Math.random()
是比較常用的方法,適合簡單的隨機數生成需求。ThreadLocalRandom
適合多執行緒環境,且效能優於Random
。