PHP 8.5.0 Alpha 2 available for testing

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