(PHP 8 >= 8.2.0)
Random\Engine\Xoshiro256StarStar::jumpLong — Эффективно перемещает движок вперёд на 2^192 шага
Перемещает состояние алгоритма вперёд на 2192 шага, как если бы метод Random\Engine\Xoshiro256StarStar::generate() был вызван 2192 раза.
Цель метода - облегчить создание нового движка Random\Engine\Xoshiro256StarStar из существующего заполненного движка Random\Engine\Xoshiro256StarStar. Заданный движок действует как проект, который можно клонировать и повторно использовать для создания 264 непересекающихся последовательностей с 2192 значениями каждая.
Метод может быть объединён с Random\Engine\Xoshiro256StarStar::jump() для дальнейшего разделения каждой из 264 последовательностей, сгенерированных данным методом, на 264 последовательности по 2128 значения каждая.
У этой функции нет параметров.
Функция не возвращает значения после выполнения.
Пример #1 Пример использования Random\Engine\Xoshiro256StarStar::jumpLong()
<?php
$blueprintRng = new \Random\Engine\Xoshiro256StarStar(0);
// У каждого родительского движка свой собственный блок из 2**192 значений.
$parent1 = clone $blueprintRng;
$blueprintRng->jumpLong();
$parent2 = clone $blueprintRng;
$blueprintRng->jumpLong();
// У каждого из дочерних движков свой собственный блок из 2**128 значений,
взятый из блока 2**192 значений их родительского движка.
$child1a = clone $parent1;
$parent1->jump();
$child1b = clone $parent1;
$parent1->jump();
$child2a = clone $parent2;
$parent2->jump();
$child2b = clone $parent2;
$parent2->jump();
echo "Дочерний 1A: ", bin2hex($child1a->generate()), "\n";
echo "Дочерний 1B: ", bin2hex($child1b->generate()), "\n";
echo "Дочерний 2A: ", bin2hex($child2a->generate()), "\n";
echo "Дочерний 2B: ", bin2hex($child2b->generate()), "\n";
?>
Результатом выполнения данного примера будет что-то подобное:
Дочерний 1A: b4f275cb365fec99 Дочерний 1B: 2cd646c8ed156237 Дочерний 2A: eb3729a722a504e7 Дочерний 2B: d4208dc85bdd6dc3