(PHP 8 >= 8.2.0)
Random\Engine\Xoshiro256StarStar::jumpLong — Avança eficientemente o mecanismo em 2^192 passos
Avança o estado do algoritmo em 2192 passos, como se Random\Engine\Xoshiro256StarStar::generate() fosse chamado 2192 vezes.
O objetivo de um salto longo é facilitar a criação de um novo mecanismo Random\Engine\Xoshiro256StarStar a partir de um mecanismo Random\Engine\Xoshiro256StarStar já existente. O mecanismo inicial atua como um processo, que pode ser clonado e saltado repetidamente para criar 264 sequências não sobrepostas com 2192 valores cada.
O salto longo pode ser combinado com Random\Engine\Xoshiro256StarStar::jump() para dividir ainda mais cada uma das 264 sequências geradas pelo salto longo, em 264 sequências de 2128 valores cada.
Esta função não possui parâmetros.
Nenhum valor é retornado.
Exemplo #1 Exemplo de Random\Engine\Xoshiro256StarStar::jumpLong()
<?php
$blueprintRng = new \Random\Engine\Xoshiro256StarStar(0);
// Cada mecanismo pai terá seu próprio bloco de 2**192 valores.
$parent1 = clone $blueprintRng;
$blueprintRng->jumpLong();
$parent2 = clone $blueprintRng;
$blueprintRng->jumpLong();
// Cada um dos mecanismos filhos terá seu próprio bloco de 2**128 valores
// retirado do bloco de 2**192 valores do mecanismo pai.
$child1a = clone $parent1;
$parent1->jump();
$child1b = clone $parent1;
$parent1->jump();
$child2a = clone $parent2;
$parent2->jump();
$child2b = clone $parent2;
$parent2->jump();
echo "Child 1A: ", bin2hex($child1a->generate()), "\n";
echo "Child 1B: ", bin2hex($child1b->generate()), "\n";
echo "Child 2A: ", bin2hex($child2a->generate()), "\n";
echo "Child 2B: ", bin2hex($child2b->generate()), "\n";
?>
O exemplo acima produzirá:
Child 1A: b4f275cb365fec99 Child 1B: 2cd646c8ed156237 Child 2A: eb3729a722a504e7 Child 2B: d4208dc85bdd6dc3