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