Start · Sprachen · PHP · Referenz · Random\IntervalBoundary

Random\IntervalBoundary

Enum

Definiert, ob die Grenzen eines Zufallsintervalls ein- oder ausgeschlossen sind.

seit PHP 8.3.0 Kategorie: crypto

Signatur

enum Random\IntervalBoundary: string

Beschreibung

Random\IntervalBoundary ist ein backed Enum (Typ string), das die vier möglichen Kombinationen von inklusiven und exklusiven Intervallgrenzen für Zufallszahlen beschreibt. Es wird in Verbindung mit Methoden wie Random\Randomizer::getFloat() verwendet, um präzise festzulegen, ob die untere und/oder obere Grenze zum möglichen Ergebnisbereich gehört.

Die vier Cases sind: ClosedOpen ([min, max)), ClosedClosed ([min, max]), OpenClosed ((min, max]) und OpenOpen ((min, max)). Eckige Klammern stehen für eine eingeschlossene (inklusive) Grenze, runde Klammern für eine ausgeschlossene (exklusive) Grenze.

Dieses Enum ermöglicht eine mathematisch exakte Steuerung des Zufallsbereichs – etwa wenn der Wert 0.0 oder 1.0 bei Wahrscheinlichkeitsberechnungen zwingend ausgeschlossen werden muss, um Division-by-Zero-Fehler oder ungültige Eingaben für logarithmische Funktionen zu vermeiden.

Beispiele

Zufalls-Float im halboffenen Intervall [0.0, 1.0)

<?php
$randomizer = new Random\Randomizer();

// Erzeugt einen Float im Intervall [0.0, 1.0):
// 0.0 ist möglich, 1.0 wird niemals zurückgegeben
$value = $randomizer->getFloat(
    0.0,
    1.0,
    Random\IntervalBoundary::ClosedOpen
);

echo $value; // z. B. 0.7342918...

Logarithmus-Berechnung mit ausgeschlossenen Grenzen (offenes Intervall)

<?php
$randomizer = new Random\Randomizer();

// Für log() muss der Wert strikt positiv sein — 0.0 darf nicht vorkommen.
// Intervall (0.0, 1.0] schliesst 0.0 aus, lässt aber 1.0 zu.
$value = $randomizer->getFloat(
    0.0,
    1.0,
    Random\IntervalBoundary::OpenClosed
);

// Sicher: $value ist niemals 0.0
$logValue = log($value);
echo $logValue; // z. B. -0.2345...

// Übersicht aller Cases:
foreach (Random\IntervalBoundary::cases() as $case) {
    echo $case->name . ' => ' . $case->value . PHP_EOL;
}
ClosedOpen => ClosedOpen ClosedClosed => ClosedClosed OpenClosed => OpenClosed OpenOpen => OpenOpen

// Wichtig · Fallstricke

Verfügbare Cases:

  • Random\IntervalBoundary::ClosedOpen[min, max): untere Grenze inklusiv, obere exklusiv. Dies ist das Standardverhalten vieler Zufallsfunktionen.
  • Random\IntervalBoundary::ClosedClosed[min, max]: beide Grenzen inklusiv.
  • Random\IntervalBoundary::OpenClosed(min, max]: untere Grenze exklusiv, obere inklusiv.
  • Random\IntervalBoundary::OpenOpen(min, max): beide Grenzen exklusiv.

Da es sich um ein backed Enum handelt, ist der value jedes Cases ein String (identisch mit dem Case-Namen). Der Enum-Wert selbst hat keine besondere Bedeutung – er dient lediglich der Identifikation. Instanzen dieses Enums können über Random\IntervalBoundary::from('ClosedOpen') oder Random\IntervalBoundary::tryFrom('...') erzeugt werden.

Achtung: Bei OpenOpen muss min strikt kleiner als max sein und es muss mindestens ein darstellbarer Fließkommawert zwischen beiden Grenzen liegen, sonst wirft getFloat() eine \ValueError-Ausnahme.