(PHP 8 >= 8.2.0)
Random\Engine\PcgOneseq128XslRr64::jump — Avanza el motor varios pasos
Avanza el estado del algoritmo el número de pasos indicado por advance
, como si
Random\Engine\PcgOneseq128XslRr64::generate() fuera llamado tantas veces.
advance
El número de pasos a avanzar; debe ser 0
o más.
No devuelve ningún valor.
advance
es inferior a 0
,
se lanzará una ValueError.
Ejemplo #1 Ejemplo de Random\Engine\PcgOneseq128XslRr64::jump()
<?php
$a = new \Random\Engine\PcgOneseq128XslRr64(0);
$b = clone $a;
for ($i = 0; $i < 1_000; $i++) {
$a->generate();
}
$b->jump(1_000);
echo "A: ", bin2hex($a->generate()), "\n";
echo "B: ", bin2hex($b->generate()), "\n";
?>
El resultado del ejemplo sería:
A: e6d0d5813913a424 B: e6d0d5813913a424
Ejemplo #2 Los métodos de Randomizer pueden llamar al motor más de una vez
<?php
$a = new \Random\Randomizer(new \Random\Engine\PcgOneseq128XslRr64(42659));
$b = new \Random\Randomizer(clone $a->engine);
$a->getInt(1, 1572864); // Realiza dos llamadas a generate().
$a->getInt(1, 1572864);
$b->engine->jump(2);
// Como la primera llamada a ->getInt() llamó a ->generate() dos veces
// los motores no coinciden después de realizar un ->jump(2).
echo "A: ", bin2hex($a->engine->generate()), "\n";
echo "B: ", bin2hex($b->engine->generate()), "\n";
// Ahora el motor B coincide con el motor A.
echo "B: ", bin2hex($b->engine->generate()), "\n";
?>
El resultado del ejemplo sería:
A: 1e9f3107d56653d0 B: a156c0086dd79d44 B: 1e9f3107d56653d0