Class StdRandom

java.lang.Object
de.pakad.statistics.Random

public final class StdRandom extends Object
Die Klasse StdRandom beitet statische Methoden an, um Zufallszahlen von verschiedenen diskreten und stetigen Verteilungen zu generieren: Gleichverteilung, Bernoulliverteilung, geometrische Verteilung, Gauss-Verteilung, Exponentialverteilung, Pareto-Verteilung, Poissonverteilung und Cauchy-Verteilung.

Es werden außerdem Methoden angeboten, um Arrays (oder Teil-Arrays) zu mischen und zufällige Permutationen zu erzeugen.

Per Konvention sind alle Intervalle nach oben offen! Die untere Grenze ist also jeweils inkludiert, die obere nicht. Analoges gilt für das Mischen (shuffle(a, lo, hi) mischt die Elemente hi - lo Elemente im Array a[], beginnend bei Index lo (inklusive) und endend bei Index hi (exklusive).

COPYRIGHT BY Karsten Brodmann 2022 - Die Bibliothek darf ausschließlich für private Lernzwecke verwendet werden. Eine Weitergabe ist nur mit schriftlicher Genehmigung des Autors gestattet.

Version:
1.0
Author:
Karsten Brodmann (kb@punkt-akademie.de)
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    Zufälliger Wahrheitswert einer Bernoulli-Verteilung mit Erfolgswahrscheinlichkeit 1/2.
    static boolean
    bernoulli(double p)
    Zufälliger Wahrheitswert einer Bernoulli-Verteilung mit Erfolgswahrscheinlichkeit p.
    static double
    Zufällige Gleitkommazahl aus der Cauchy-Verteilung.
    static int
    discrete(double[] probabilities)
    Zufällige Ganzzahl einer deiskreten Verteilung mit den Werten 0 bis maximaler Indexwert des Arrays mit den Wahrscheinlichkeiten.
    static double
    exp(double lambda)
    Zufällige Gleitkommazahl einer Exponentialverteilung mit Rate λ.
    static double
    Zufällige Gleitkommazahl der Standard-Gauss-Normalverteilung.
    static double
    gaussian(double mu, double sigma)
    Zufällige Gleitkommazahl der Gauss-Normalverteilung mit Mittelwert μ und Standardabweichung σ.
    static int
    geometric(double p)
    Ganzzahlige Zufallszahl einer geometrischen Verteilung mit Erfolgswahrscheinlichkeit p.
    static long
    Startwert des Pseudo-Zufallszahlengenerators.
    static double
    Zufällige Gleitkommazahl einer Standard-Pareto-Verteilung.
    static double
    pareto(double alpha)
    Zufällige Gleitkommazahl einer Pareto-Verteilung mit Form-Parameter α.
    static int[]
    permutation(int n)
    Gleichverteilte Zufallspermutation von n Ganzzahlen.
    static int
    poisson(double lambda)
    Zufällige Ganzzahl einer Poissonverteilung mit Mittelwert λ.
    static void
    setSeed(long s)
    Setzen des Startwertes für den Pseudo-Zufallszahlengenerator.
    static void
    shuffle(boolean[] a)
    Gleichverteiltes Mischen eines Arrays von Wahrheitswerten.
    static void
    shuffle(char[] a)
    Gleichverteiltes Mischen eines Arrays von Zeichen.
    static void
    shuffle(double[] a)
    Gleichverteiltes Mischen eines Arrays von Gleitkommazahlen.
    static void
    shuffle(int[] a)
    Gleichverteiltes Mischen eines Arrays ganzer Zahlen.
    static void
    Gleichverteiltes Mischen eines Arrays von Objekten.
    static void
    Gleichverteiltes Mischen eines Arrays von Zeichenketten.
    static double
    Zufällige Gleitkommazahl einer Gleichverteilung in [0, 1).
    static double
    uniform(double a, double b)
    Gleichverteilte Gleitkommazufallszahl aus [a, b).
    static int
    uniform(int n)
    Gleichverteilte Zufallsganzzahl aus [0, n).
    static int
    uniform(int a, int b)
    Gleichverteilte ganzzahlige Zufallszahl aus [a, b).
    static long
    uniform(long n)
    Gleichverteilte Zufallsganzzahl aus [0, n).

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • setSeed

      public static void setSeed(long s)
      Setzen des Startwertes für den Pseudo-Zufallszahlengenerator.

      Die Methode erlaubt es, wiederholt die gleichen Zufallszahlensequenzen zu generieren. Normalerweise sollte die Methode aber, wenn überhaupt, nur einmalig im Programm aufgerufen werden.

      Parameters:
      s - Startwert
    • getSeed

      public static long getSeed()
      Startwert des Pseudo-Zufallszahlengenerators.
      Returns:
      Startwert
    • uniform

      public static double uniform()
      Zufällige Gleitkommazahl einer Gleichverteilung in [0, 1).
      Returns:
      gleichverteilte Zufallszahl aus [0, 1)
    • uniform

      public static int uniform(int n)
      Gleichverteilte Zufallsganzzahl aus [0, n).
      Parameters:
      n - Anzahl möglicher Zahlen
      Returns:
      gleichverteilte Zufallsganzzahl aus [0, n)
      Throws:
      IllegalArgumentException - wenn n <= 0
    • uniform

      public static long uniform(long n)
      Gleichverteilte Zufallsganzzahl aus [0, n).
      Parameters:
      n - Anzahl möglicher Zahlen
      Returns:
      gleichverteilte Zufallsganzzahl aus [0, n)
      Throws:
      IllegalArgumentException - wenn n <= 0
    • uniform

      public static int uniform(int a, int b)
      Gleichverteilte ganzzahlige Zufallszahl aus [a, b).
      Parameters:
      a - kleinster Wert (inklusive)
      b - größter Wert (exklusive)
      Returns:
      a zufällige Ganzzahl aus [a, b)
      Throws:
      IllegalArgumentException - wenn b <= a
      IllegalArgumentException - wenn b - a >= Integer.MAX_VALUE
    • uniform

      public static double uniform(double a, double b)
      Gleichverteilte Gleitkommazufallszahl aus [a, b).
      Parameters:
      a - kleinster Wert (inklusive)
      b - größter Wert (exklusive)
      Returns:
      a zufällige Ganzzahl aus [a, b)
      Throws:
      IllegalArgumentException - wenn b <= a
      IllegalArgumentException - wenn b - a >= Integer.MAX_VALUE
    • bernoulli

      public static boolean bernoulli(double p)
      Zufälliger Wahrheitswert einer Bernoulli-Verteilung mit Erfolgswahrscheinlichkeit p.
      Parameters:
      p - Wahrscheilichkeit für true
      Returns:
      true mit Wahrschleinlichkeit p und false mit Wahrscheinlichkeit 1 - p
      Throws:
      IllegalArgumentException - wenn nicht 0p1.0
    • bernoulli

      public static boolean bernoulli()
      Zufälliger Wahrheitswert einer Bernoulli-Verteilung mit Erfolgswahrscheinlichkeit 1/2.
      Returns:
      true mit Wahrschleinlichkeit 1/2 und false mit Wahrscheinlichkeit 1/2
    • gaussian

      public static double gaussian()
      Zufällige Gleitkommazahl der Standard-Gauss-Normalverteilung.
      Returns:
      Zufallszahl der Standard-Gauss-Normalverteilung (Mittelwert 0 und Standardabweichung 1)
    • gaussian

      public static double gaussian(double mu, double sigma)
      Zufällige Gleitkommazahl der Gauss-Normalverteilung mit Mittelwert μ und Standardabweichung σ.
      Parameters:
      mu - Mittelwert
      sigma - Stanardabweichung
      Returns:
      Zufällige Gleitkommazahl der Gauss-Normalverteilung mit Mittelwert μ und Standardabweichung σ.
    • geometric

      public static int geometric(double p)
      Ganzzahlige Zufallszahl einer geometrischen Verteilung mit Erfolgswahrscheinlichkeit p.

      Die Zufallszahl zeigt die Anzahl der unabhängiger Versuche bis zum ersten Erfolg an.

      Parameters:
      p - Parameter der geometrischen Verteilung
      Returns:
      Ganzzahlige Zufallszahl einer geometrischen Verteilung mit Erfolgswahrscheinlichkeit p oder Integer.MAX_VALUE, wenn p näherungsweise gleich 1.0 ist.
      Throws:
      IllegalArgumentException - wenn nicht p >= 0.0 und p <= 1.0
    • poisson

      public static int poisson(double lambda)
      Zufällige Ganzzahl einer Poissonverteilung mit Mittelwert λ.
      Parameters:
      lambda - Mittelwert der Poissonverteilung
      Returns:
      zufällige Ganzzahl einer Poissonverteilung mit Mittelwert lambda
      Throws:
      IllegalArgumentException - lambda muss größer 0.0 und kleiner unendlich sein
    • pareto

      public static double pareto()
      Zufällige Gleitkommazahl einer Standard-Pareto-Verteilung.
      Returns:
      zufällige Gleitkommazahl einer Standard-Pareto-Verteilung
    • pareto

      public static double pareto(double alpha)
      Zufällige Gleitkommazahl einer Pareto-Verteilung mit Form-Parameter α.
      Parameters:
      alpha - Form-Parameter
      Returns:
      Zufällige Gleitkommazahl einer Pareto-Verteilung mit * Form-Parameter alpha
      Throws:
      IllegalArgumentException - wenn alpha <= 0.0
    • cauchy

      public static double cauchy()
      Zufällige Gleitkommazahl aus der Cauchy-Verteilung.
      Returns:
      zufällige Gleitkommazahl aus der Cauchy-Verteilung
    • discrete

      public static int discrete(double[] probabilities)
      Zufällige Ganzzahl einer deiskreten Verteilung mit den Werten 0 bis maximaler Indexwert des Arrays mit den Wahrscheinlichkeiten.
      Parameters:
      probabilities - Wahrscheinlichkeit des Auftretens jeder Ganzzahl (Index)
      Returns:
      Zufallszahl einer diskreten Wahrscheinlichkeit: i mit Wahrscheinlichkeit probabilities[i]
      Throws:
      IllegalArgumentException - wenn probabilities gleich null
      IllegalArgumentException - wenn Summe der Wahrscheinlichkeiten nicht näherungsweise gleich 1.0
      IllegalArgumentException - wenn nicht für jede Wahrscheinlichkeit an Index i gilt: probabilities[i] >= 0.0
    • exp

      public static double exp(double lambda)
      Zufällige Gleitkommazahl einer Exponentialverteilung mit Rate λ.
      Parameters:
      lambda - Rate der Exponentialverteilung
      Returns:
      Zufällige Gleitkommazahl einer Exponentialverteilung mit Rate lambda
      Throws:
      IllegalArgumentException - wenn nicht lambda > 0.0
    • shuffle

      public static void shuffle(double[] a)
      Gleichverteiltes Mischen eines Arrays von Gleitkommazahlen.
      Parameters:
      a - zu mischendes Array
      Throws:
      IllegalArgumentException - wenn a gleich null
    • shuffle

      public static void shuffle(int[] a)
      Gleichverteiltes Mischen eines Arrays ganzer Zahlen.
      Parameters:
      a - zu mischendes Array
      Throws:
      IllegalArgumentException - wenn a gleich null
    • shuffle

      public static void shuffle(char[] a)
      Gleichverteiltes Mischen eines Arrays von Zeichen.
      Parameters:
      a - zu mischendes Array
      Throws:
      IllegalArgumentException - wenn a gleich null
    • shuffle

      public static void shuffle(String[] a)
      Gleichverteiltes Mischen eines Arrays von Zeichenketten.
      Parameters:
      a - zu mischendes Array
      Throws:
      IllegalArgumentException - wenn a gleich null
    • shuffle

      public static void shuffle(boolean[] a)
      Gleichverteiltes Mischen eines Arrays von Wahrheitswerten.
      Parameters:
      a - zu mischendes Array
      Throws:
      IllegalArgumentException - wenn a gleich null
    • shuffle

      public static void shuffle(Object[] a)
      Gleichverteiltes Mischen eines Arrays von Objekten.
      Parameters:
      a - zu mischendes Array
      Throws:
      IllegalArgumentException - wenn a gleich null
    • permutation

      public static int[] permutation(int n)
      Gleichverteilte Zufallspermutation von n Ganzzahlen.
      Parameters:
      n - Anzahl der Zahlen
      Returns:
      Array der Länge n mit gleichverteilter Zufallspermutation der Zahlen 0, 1, ..., n-1
      Throws:
      IllegalArgumentException - wenn n kleiner gleich 0 ist