ConFoo 2025

Random\Engine\Mt19937::__construct

(PHP 8 >= 8.2.0)

Random\Engine\Mt19937::__constructConstructs a new Mt19937 engine

Beschreibung

public Random\Engine\Mt19937::__construct(?int $seed = null, int $mode = MT_RAND_MT19937)

Achtung

Da die Mt19937- ("Mersenne Twister") Engine nur einen einzigen 32-Bit-Integer als Seed akzeptiert, ist die Anzahl der möglichen Zufallsfolgen trotz der riesigen Periode von 219937-1 auf nur 232 (d. h. 4.294.967.296) begrenzt.

Wenn man sich auf implizites oder explizites zufälliges Seeding verlässt, treten Duplikate viel früher auf. Nach dem Geburtstagsproblem werden doppelte Seeds mit einer Wahrscheinlichkeit von 50% nach weniger als 80.000 zufällig erzeugten Seeds erwartet. Nach etwa 30.000 zufällig erzeugten Seeds tritt ein doppeltes Seed mit einer Wahrscheinlichkeit von 10% auf.

Daher ist Mt19937 nicht für Anwendungen geeignet, bei denen doppelte Sequenzen nur mit vernachlässigbarer Wahrscheinlichkeit auftreten dürfen. Wenn reproduzierbares Seeding erforderlich ist, unterstützen sowohl Random\Engine\Xoshiro256StarStar als auch Random\Engine\PcgOneseq128XslRr64 wesentlich größere Seeds, bei denen eine zufällige Kollision unwahrscheinlich ist. Wenn keine Reproduzierbarkeit erforderlich ist, bietet die Engine Random\Engine\Secure eine kryptografisch sichere Zufallsverteilung.

Warnung

Diese Funktion ist bis jetzt nicht dokumentiert. Es steht nur die Liste der Parameter zur Verfügung.

Parameter-Liste

seed

Fills the state with values generated with a linear congruential generator that was seeded with seed interpreted as an unsigned 32 bit integer.

If seed is omitted or null, a random unsigned 32 bit integer will be used.

mode

Use one of the following constants to specify the implementation of the algorithm to use.

Warnung

Dieses Feature ist seit PHP 8.3.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieses Features wird dringend abgeraten.

Beispiele

Beispiel #1 Random\Engine\Mt19937::__construct() example

<?php
// Uses a random 32 Bit seed.
$e = new \Random\Engine\Mt19937();

$r = new \Random\Randomizer($e);
?>
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top