在 Java 中生成 0 和 1 之間的隨機雙精度值
-
在 Java 中使用
Math.random()
生成 0 和 1 之間的隨機雙精度值 -
在 Java 中使用
Random().nextDouble()
生成 0 和 1 之間的隨機雙精度值 -
在 Java 中使用
ThreadLocalRandom.current().nextDouble()
生成 0 和 1 之間的隨機雙精度值
本文將介紹三種方法來生成原始型別 double
的 0 到 1 之間的隨機值。為了證明生成值的隨機性,我們將使用迴圈生成 0 到 1 之間的十個隨機雙精度值。
在 Java 中使用 Math.random()
生成 0 和 1 之間的隨機雙精度值
Math
類可用於執行各種數學運算。我們也可以使用這個類來生成隨機數。Math.random()
是返回 0 到 1 之間隨機數的靜態函式。這裡,0 包含生成的值,而 1 始終不包含。
在以下示例中,我們使用 Math.random()
生成 double
型別的隨機值。在輸出中,我們可以看到這些值都是隨機的。
public class RandomDouble {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
double randomDbl = Math.random();
System.out.println(randomDbl);
}
}
}
輸出:
0.9537872648347154
0.2863804438195172
0.5815339629441948
0.7734677312115609
0.021051510563543485
0.9064133490694901
0.6833468691871607
0.30655711217738246
0.2730784326888416
0.6804778782692341
在 Java 中使用 Random().nextDouble()
生成 0 和 1 之間的隨機雙精度值
另一種可以生成 0 到 1 之間隨機數的方法是 nextDouble()
,它是 java.util.Random
類的一部分。當我們使用 Random
類的物件呼叫 nextDouble()
時,它返回一個介於 0 和 1 之間的隨機值,就像我們在前面的示例中看到的那樣。
據說這種方法比 Math.random()
更有效。
import java.util.Random;
public class RandomDouble {
public static void main(String[] args) {
Random randomObj = new Random();
for (int i = 0; i < 10; i++) {
double randomDbl = randomObj.nextDouble();
System.out.println(randomDbl);
}
}
}
輸出:
0.240017494934622
0.08331956619499614
0.4359524465181911
0.5291811081068774
0.38193057731688373
0.6969527822622924
0.5436002348156281
0.32176862575520415
0.07327708002828293
0.9005635171231344
在 Java 中使用 ThreadLocalRandom.current().nextDouble()
生成 0 和 1 之間的隨機雙精度值
我們在本教程中看到的兩種技術對於多執行緒系統效率不高,可能會導致效能不佳。這是因為當我們使用 Random
類生成隨機數時,所有執行緒共享同一個例項,這意味著當一個執行緒發生變化時,所有其他執行緒也會被執行。
為了解決這個問題,Java 在 JDK 7 更新中引入了 ThreadLocalRandom
。它是一個只在當前執行緒上執行的類,從而在多執行緒環境中獲得更好的效能。
在下面的示例中,我們呼叫 nextDouble()
,它使用 ThreadLocalRandom.current()
生成雙隨機值,它返回一個隨機生成的介於 0 和 1 之間的雙精度值。
import java.util.concurrent.ThreadLocalRandom;
public class RandomDouble {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
double randomDbl = ThreadLocalRandom.current().nextDouble();
System.out.println(randomDbl);
}
}
}
輸出:
0.9717084711770174
0.8977374014983726
0.2744375247405819
0.2866498720386894
0.6118970047667582
0.7441044456568308
0.21043457873690274
0.08985457420563114
0.86748682220748
0.18952106607144148
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn