Start · Sprachen · PHP · Referenz · gmp_random

gmp_random

Funktion

Erzeugt eine zufällige <code>GMP</code>-Ganzzahl mit einer durch <code>limb_bits</code> bestimmten Anzahl von Bits.

seit PHP 4.0.4 Kategorie: math

Signatur

gmp_random(int $limb_bits = 32): GMP

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

Typ
GMP
Beschreibung
Gibt ein 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;
?>
2847392041 12938471029384750183

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;
?>
11352894720194857362 4729183746291

// 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.