Start · Sprachen · PHP · Referenz · stats_rand_get_seeds

stats_rand_get_seeds

Funktion

Liest die aktuellen Seed-Werte des internen Zufallszahlengenerators der PECL-Statistik-Erweiterung aus.

Kategorie: math

Signatur

stats_rand_get_seeds(int &$seed1, int &$seed2): bool

Beschreibung

stats_rand_get_seeds() ist Teil der PECL stats-Erweiterung und gibt die aktuell gesetzten Seed-Werte des internen Zufallszahlengenerators zurück. Der Generator arbeitet mit zwei unabhängigen Integer-Seeds, die gemeinsam den Zustand des Generators beschreiben.

Die Funktion ist nützlich, wenn man den Zustand des Zufallszahlengenerators zu einem bestimmten Zeitpunkt sichern möchte, um ihn später mit stats_rand_setall() exakt wiederherstellen zu können. Dadurch lassen sich reproduzierbare Zufallssequenzen erzeugen – wichtig etwa für Unit-Tests, Simulationen oder wissenschaftliche Berechnungen, bei denen Reproduzierbarkeit gefragt ist.

Beide Parameter werden als Referenz übergeben und von der Funktion mit den aktuellen Seed-Werten befüllt. Nach dem Aufruf enthalten $seed1 und $seed2 die ganzzahligen Seeds des Generators.

Hinweis: Die Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung stats installiert und geladen ist. Sie ist nicht Bestandteil des PHP-Kerns.

Parameter

Name Typ Default Beschreibung
$seed1 Pflicht int Wird per Referenz übergeben und nach dem Aufruf mit dem ersten aktuellen Seed-Wert des Zufallszahlengenerators befüllt.
$seed2 Pflicht int Wird per Referenz übergeben und nach dem Aufruf mit dem zweiten aktuellen Seed-Wert des Zufallszahlengenerators befüllt.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Seeds erfolgreich ausgelesen wurden, andernfalls false.

Beispiele

Aktuelle Seeds auslesen und ausgeben

<?php
// Seed-Werte des Stats-Zufallszahlengenerators auslesen
$seed1 = 0;
$seed2 = 0;

if (stats_rand_get_seeds($seed1, $seed2)) {
    echo "Seed 1: $seed1" . PHP_EOL;
    echo "Seed 2: $seed2" . PHP_EOL;
} else {
    echo "Fehler beim Auslesen der Seeds." . PHP_EOL;
}
Seed 1: 12345 Seed 2: 67890

Generatorzustand sichern und wiederherstellen

<?php
// Aktuelle Seeds sichern
$seed1 = 0;
$seed2 = 0;
stats_rand_get_seeds($seed1, $seed2);

echo "Gespeicherte Seeds: $seed1, $seed2" . PHP_EOL;

// Einige Zufallszahlen erzeugen (verändert den internen Zustand)
$r1 = stats_rand_gen_iuniform(1, 100);
$r2 = stats_rand_gen_iuniform(1, 100);
echo "Zufallszahlen nach dem ersten Durchlauf: $r1, $r2" . PHP_EOL;

// Zustand wiederherstellen
stats_rand_setall($seed1, $seed2);

// Dieselbe Sequenz erneut erzeugen
$r3 = stats_rand_gen_iuniform(1, 100);
$r4 = stats_rand_gen_iuniform(1, 100);
echo "Zufallszahlen nach dem zweiten Durchlauf (reproduziert): $r3, $r4" . PHP_EOL;

// r1 === r3 und r2 === r4, da der Zustand wiederhergestellt wurde
Gespeicherte Seeds: 12345, 67890 Zufallszahlen nach dem ersten Durchlauf: 42, 17 Zufallszahlen nach dem zweiten Durchlauf (reproduziert): 42, 17

// Wichtig · Fallstricke

PECL-Abhängigkeit: stats_rand_get_seeds() ist nicht im PHP-Kern enthalten und erfordert die Installation der PECL-Erweiterung stats. Ohne diese Erweiterung führt der Aufruf zu einem fatalen Fehler (Call to undefined function).

Kryptographische Eignung: Der interne Zufallszahlengenerator der stats-Erweiterung ist nicht für kryptographische Zwecke geeignet. Für sicherheitsrelevante Anwendungen (z. B. Passwörter, Tokens) sollte stattdessen random_bytes() oder random_int() verwendet werden.

Die genaue Dokumentation der Funktion ist in der offiziellen PHP-Dokumentation spärlich. Das Verhalten kann je nach installierter Version der stats-Erweiterung leicht variieren.