Signatur
Beschreibung
gmp_random() erzeugt eine nicht-negative Zufallszahl auf Basis der GMP-Bibliothek. Der Parameter limb_bits legt fest, wie viele 32-Bit-Limbs (interne Speichereinheiten der GMP-Bibliothek) die Zufallszahl umfasst. Je größer der Wert, desto mehr Bits hat die erzeugte Zahl.
Die Funktion ist nützlich, wenn man mit sehr großen Zufallszahlen arbeiten muss, die über den Bereich normaler PHP-Integer hinausgehen, z. B. in kryptografischen Anwendungen, Primzahltests oder mathematischen Simulationen.
Achtung: gmp_random() ist seit PHP 7.2.0 als veraltet (deprecated) markiert und wurde in PHP 8.0.0 entfernt. Stattdessen sollten gmp_random_bits() oder gmp_random_range() verwendet werden, die eine klarere und plattformunabhängige Schnittstelle bieten.
Das Verhalten von gmp_random() ist plattformabhängig, da die interne Limb-Größe je nach System variieren kann. Dies macht die Funktion schwer vorhersehbar und ist ein weiterer Grund, auf die Nachfolger-Funktionen umzusteigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $limb_bits | int | 32 | Anzahl der 32-Bit-Limbs, aus denen die Zufallszahl aufgebaut wird. Ein Wert von 1 erzeugt eine Zahl mit bis zu 32 Zufallsbits, ein Wert von 2 bis zu 64 Bits usw. Die tatsächliche Bit-Breite ist plattformabhängig. |
Rückgabewert
GMP-Objekt zurück, das eine nicht-negative Zufallszahl enthält. Die Größe der Zahl hängt vom Parameter limb_bits und der Plattform ab.Beispiele
Einfache Zufallszahl erzeugen
<?php
// Erzeugt eine Zufallszahl mit einem Limb (bis zu 32 Bit)
$zufallszahl = gmp_random(1);
echo gmp_strval($zufallszahl) . PHP_EOL;
// Erzeugt eine Zufallszahl mit zwei Limbs (bis zu 64 Bit)
$grosse_zufallszahl = gmp_random(2);
echo gmp_strval($grosse_zufallszahl) . PHP_EOL;
?>
Migration zu gmp_random_bits() (empfohlen ab PHP 7.2)
<?php
// VERALTET (deprecated seit PHP 7.2, entfernt in PHP 8.0):
// $zahl = gmp_random(2);
// Empfohlene Alternative: gmp_random_bits()
// Erzeugt eine Zufallszahl mit genau 64 Zufallsbits
$zahl = gmp_random_bits(64);
echo gmp_strval($zahl) . PHP_EOL;
// Oder mit gmp_random_range() für einen bestimmten Bereich:
$min = gmp_init('1000000000000');
$max = gmp_init('9999999999999');
$zahl_in_bereich = gmp_random_range($min, $max);
echo gmp_strval($zahl_in_bereich) . PHP_EOL;
?>
// Wichtig · Fallstricke
Deprecation: gmp_random() wurde in PHP 7.2.0 als veraltet markiert und in PHP 8.0.0 vollständig entfernt. Neuer Code sollte stets gmp_random_bits() für eine feste Bit-Breite oder gmp_random_range() für einen definierten Zahlenbereich verwenden.
Plattformabhängigkeit: Die tatsächliche Bit-Breite der erzeugten Zahl hängt von der internen Limb-Größe der GMP-Bibliothek auf dem jeweiligen System ab und kann zwischen 32-Bit- und 64-Bit-Systemen stark variieren. Dies macht portablen Code mit gmp_random() schwierig.
Sicherheit: gmp_random() ist nicht kryptografisch sicher. Für sicherheitskritische Anwendungen sollte random_bytes() oder random_int() in Kombination mit gmp_init() verwendet werden.