(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 "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";
?>
以上示例将输出
Child 1A: b4f275cb365fec99 Child 1B: 2cd646c8ed156237 Child 2A: eb3729a722a504e7 Child 2B: d4208dc85bdd6dc3