Generieren Sie zufällige Double-Werte zwischen 0 und 1 in Java

Rupam Yadav 12 Oktober 2023
  1. Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit Math.random() in Java
  2. Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit Random().nextDouble() in Java
  3. Generieren Sie zufällige Double-Werte zwischen 0 und 1 mit ThreadLocalRandom.current().nextDouble() in Java
Generieren Sie zufällige Double-Werte zwischen 0 und 1 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 Yadav avatar Rupam Yadav avatar

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

Verwandter Artikel - Java Random