(PHP 8 >= 8.2.0)
Random\Engine\Xoshiro256StarStar::jump — Эффективно перемещает движок вперёд на 2^128 шагов
Перемещает состояние алгоритма вперёд на 2128 шага, как если бы метод Random\Engine\Xoshiro256StarStar::generate() был вызван 2128 раза.
Цель метода - облегчить создание нового движка Random\Engine\Xoshiro256StarStar из существующего заполненного движка Random\Engine\Xoshiro256StarStar. Заданный движок действует как проект, который можно клонировать и повторно использовать для создания 2128 непересекающихся последовательностей с 2128 значениями каждая.
Сигнатура функции не содержит параметров.
Функция не возвращает значения после выполнения.
Пример #1 Пример использования Random\Engine\Xoshiro256StarStar::jump()
<?php
use Random\Engine\Xoshiro256StarStar;
use Random\Randomizer;
$blueprintRng = new Xoshiro256StarStar(0);
$fibers = [];
for ($i = 0; $i < 8; $i++) {
    $fiberRng = clone $blueprintRng;
    $blueprintRng->jump();
    $fiber = new Fiber(static function () use ($fiberRng, $i): void {
        $randomizer = new Randomizer($fiberRng);
        while (true) {
            Fiber::suspend();
            echo "{$i}: ", $randomizer->getInt(0, 100), "\n";
        }
    });
    $fiber->start();
    $fibers[] = $fiber;
}
// Даже если файберы выполняются в случайном порядке, они будут выводить одно и то же значение каждый раз,
// потому что у каждого из них свой собственный уникальный экземпляр RNG.
$randomizer = new Randomizer();
$fibers = $randomizer->shuffleArray($fibers);
foreach ($fibers as $fiber) {
    $fiber->resume();
}
$fibers = $randomizer->shuffleArray($fibers);
foreach ($fibers as $fiber) {
    $fiber->resume();
}
?>Вывод приведённого примера будет похож на:
4: 89 3: 10 2: 63 1: 75 6: 41 5: 56 0: 16 7: 60 7: 34 6: 58 1: 74 4: 63 3: 3 5: 42 2: 45 0: 86
