Generieren Sie zufällige Double-Werte zwischen 0 und 1 in Java
-
Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit
Math.random()
in Java -
Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit
Random().nextDouble()
in Java -
Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit
ThreadLocalRandom.current().nextDouble()
in Java
Dieser Artikel stellt drei Methoden vor, um Zufallswerte zwischen 0 und 1 des primitiven Typs double
zu generieren. Um die Zufälligkeit der generierten Werte zu beweisen, werden wir eine Schleife verwenden, um zehn zufällige Double-Type-Werte zwischen 0 und 1 zu generieren.
Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit Math.random()
in Java
Mit der Klasse Math
können verschiedene mathematische Operationen durchgeführt werden. Wir können diese Klasse auch verwenden, um Zufallszahlen zu generieren. Math.random()
ist die statische Funktion, die Zufallszahlen zwischen 0 und 1 zurückliefert. Dabei beinhaltet 0 die generierten Werte, während 1 immer exklusiv ist.
Im folgenden Beispiel verwenden wir Math.random()
, um Zufallswerte vom Typ double
zu generieren. In der Ausgabe können wir sehen, dass die Werte alle zufällig sind.
public class RandomDouble {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
double randomDbl = Math.random();
System.out.println(randomDbl);
}
}
}
Ausgabe:
0.9537872648347154
0.2863804438195172
0.5815339629441948
0.7734677312115609
0.021051510563543485
0.9064133490694901
0.6833468691871607
0.30655711217738246
0.2730784326888416
0.6804778782692341
Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit Random().nextDouble()
in Java
Eine weitere Methode, die Zufallszahlen zwischen 0 und 1 generieren kann, ist nextDouble()
, ein Teil der Klasse java.util.Random
. Wenn wir nextDouble()
mit dem Objekt der Klasse Random
aufrufen, gibt es einen zufälligen Wert zwischen 0 und 1 zurück, genau wie im vorherigen Beispiel.
Diese Methode soll effizienter sein als 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);
}
}
}
Ausgabe:
0.240017494934622
0.08331956619499614
0.4359524465181911
0.5291811081068774
0.38193057731688373
0.6969527822622924
0.5436002348156281
0.32176862575520415
0.07327708002828293
0.9005635171231344
Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit ThreadLocalRandom.current().nextDouble()
in Java
Die beiden Techniken, die wir in diesem Tutorial gesehen haben, sind für Multithread-Systeme nicht effizient und können zu einer schlechten Leistung führen. Dies liegt daran, dass bei der Generierung von Zufallszahlen mit der Klasse Random
alle Threads dieselbe Instanz teilen, was bedeutet, dass bei einer Änderung an einem Thread auch alle anderen Threads ausgeführt werden.
Um dieses Problem zu lösen, hat Java im JDK 7-Update ThreadLocalRandom
eingeführt. Es handelt sich um eine Klasse, die nur auf dem aktuellen Thread ausgeführt wird, was zu einer besseren Leistung in einer Umgebung mit mehreren Threads führt.
Im folgenden Beispiel rufen wir das nextDouble()
auf, das doppelte Zufallswerte mit ThreadLocalRandom.current()
generiert, und es gibt einen zufällig generierten Double-Wert zwischen 0 und 1 zurück.
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);
}
}
}
Ausgabe:
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