Signatur
Beschreibung
stats_rand_phrase_to_seeds ist Teil der PECL-Erweiterung stats und dient dazu, aus einer frei wählbaren Zeichenkette (Passphrase) zwei ganzzahlige Seed-Werte zu erzeugen, die anschließend an den internen Zufallszahlengenerator der stats-Funktionen übergeben werden können.
Das Erzeugen von Seeds aus einer Phrase ist nützlich, wenn reproduzierbare Zufallssequenzen benötigt werden: Dieselbe Phrase führt stets zu denselben Seeds und damit zu denselben Zufallszahlen. Typische Anwendungsfälle sind statistische Simulationen, Tests und wissenschaftliche Berechnungen, bei denen die Reproduzierbarkeit von Ergebnissen wichtig ist.
Die zurückgegebenen zwei Seeds können zusammen mit Funktionen wie stats_rand_setall verwendet werden, um den Generator in einen definierten Zustand zu versetzen. Die genaue Hash-Methode ist implementierungsabhängig und nicht kryptografisch sicher.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $phrase Pflicht | string | Eine beliebige Zeichenkette, aus der die beiden Seed-Werte abgeleitet werden. Gleiche Phrasen liefern stets gleiche Seeds. |
Rückgabewert
's1' und 's2', die als Seed-Werte für den Zufallszahlengenerator genutzt werden können.Beispiele
Seeds aus einer Phrase erzeugen und Generator initialisieren
<?php
// Voraussetzung: PECL-Erweiterung 'stats' muss installiert sein
$phrase = 'MeinGeheimesPasswort2024';
$seeds = stats_rand_phrase_to_seeds($phrase);
echo 'Seed 1: ' . $seeds['s1'] . PHP_EOL;
echo 'Seed 2: ' . $seeds['s2'] . PHP_EOL;
// Zufallszahlengenerator mit den erzeugten Seeds initialisieren
stats_rand_setall($seeds['s1'], $seeds['s2']);
// Reproduzierbare Zufallszahl erzeugen
$zufallszahl = stats_rand_gen_funiform(0.0, 1.0);
echo 'Zufallszahl: ' . $zufallszahl . PHP_EOL;
?>
Reproduzierbarkeit überprüfen
<?php
// Dieselbe Phrase liefert immer dieselben Seeds
$seeds1 = stats_rand_phrase_to_seeds('TestPhrase');
$seeds2 = stats_rand_phrase_to_seeds('TestPhrase');
var_dump($seeds1['s1'] === $seeds2['s1']); // bool(true)
var_dump($seeds1['s2'] === $seeds2['s2']); // bool(true)
// Eine andere Phrase liefert andere Seeds
$seeds3 = stats_rand_phrase_to_seeds('AnderePhrase');
var_dump($seeds1['s1'] === $seeds3['s1']); // bool(false) — in der Regel
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Diese Funktion ist nicht für kryptografische Zwecke geeignet. Die erzeugten Seeds sind deterministisch und der Algorithmus ist nicht kryptografisch sicher. Für sichere Zufallszahlen sollte stattdessen random_bytes() oder random_int() verwendet werden.
Verfügbarkeit: Die Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung stats installiert und aktiviert ist. Sie ist nicht Teil der PHP-Standardinstallation.
Die Rückgabe-Schlüssel des Arrays können je nach Version der stats-Erweiterung variieren — prüfe im Zweifel mit var_dump(), welche Schlüssel tatsächlich vorhanden sind.