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
"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

参见

添加备注

用户贡献的注释

此页面没有用户贡献的注释。
To Top