(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