PHP Conference Japan 2024

Random\Engine\Xoshiro256StarStar::jumpLong

(PHP 8 >= 8.2.0)

Random\Engine\Xoshiro256StarStar::jumpLongЭффективно перемещает движок вперёд на 2^192 шага

Описание

public Random\Engine\Xoshiro256StarStar::jumpLong(): void

Перемещает состояние алгоритма вперёд на 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

Смотрите также

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top