2.6. Zufallsvariablen

Wenn eine Variable die Werte ihres Definitionsbereiches zufällig annimmt, sprechen wir von einer Zufallsvariablen.

Wichtig in Simulationen, Spielen und randomisierten Algorithmen sind Zufallsvariablen, bei denen die Verteilung der einzelnen Werte bekannt ist, d. h., bei denen wir die Wahrscheinlichkeit kennen, mit der die Variable einen bestimmten Wert annimmt. Ein Beispiel dafür haben wir schon in Abschnitt 2.5.1 gesehen. Dort haben wir mit Hilfe der Klasse random_source einen gerechten Würfel simuliert, d. h. einen Würfel, dessen einzelne Augenzahlen alle mit derselben Wahrscheinlichkeit von 1/6 fallen. Die Variable „Augenzahl“ ist eine gleichverteilte Zufallsvariable. Die Klasse random_source dient zum Erzeugen gleichverteilter Zufallsvariablen.[25]

Was aber, wenn die Werte der Variablen nicht gleichverteilt sind? Wenn es sich etwa um einen gezinkten Würfel handelt, bei dem die Augenzahl „6“ häufiger fällt als die anderen Zahlen? Für solche nicht-gleichverteilten Zufallsvariablen hält LEDA die Klassen random_variate und dynamic_random_variate bereit.

random_variate dient zum Erzeugen von Zufallswerten, deren Verteilung sich nicht ändert und im Voraus bekannt ist. Mit dynamic_random_variate dagegen können Zufallswerte erzeugt werden, deren Verteilung sich während des Programmlaufes ändert.



[25] Um einen anderen Wertebereich W als das von random_source erzeugte ganzzahlige Intervall I zu erhalten, können wir z. B. die aus I erzeugten Werte als Indizes eines Arrays benutzen, das die gewünschten Zufallswerte W enthält. So können beliebige, auch nicht-ganzzahlige Zufallswerte (mit gleicher Wahrscheinlichkeit) erzeugt werden.