PHP Conference Nagoya 2025

Random\Engine\PcgOneseq128XslRr64::__construct

(PHP 8 >= 8.2.0)

Random\Engine\PcgOneseq128XslRr64::__construct128 ビットのステートと XSL RR 変換を使う、新しいPCGエンジンを作成する

説明

public Random\Engine\PcgOneseq128XslRr64::__construct(string|int|null $seed = null)

警告

この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。

パラメータ

seed

128ビット(16バイト) の符号なし整数が、 どのように与えられるかを seed のタイプを使って指定します。

タイプ 説明
null ランダムな16バイトのステートを、 CSPRNG を使って生成し、埋めます。
int 0 に設定することでステートを埋め、エンジンの内部状態をひとつ進めます。 そして、seed を64ビットの符号なし整数と解釈して加算し、 エンジンの内部状態をさらにもうひとつ進めます。
string 16バイトの文字列を、リトルエンディアン、 かつ符号なし128ビットの整数と解釈してステートを埋めます。

エラー / 例外

  • seedが文字列で、長さが16バイトでなかった場合、 ValueError がスローされます。

例1 Random\Engine\PcgOneseq128XslRr64::__construct() の例

<?php
// ランダムな128ビットのシードを使います。
$e = new \Random\Engine\PcgOneseq128XslRr64();

$r = new \Random\Randomizer($e);
?>

例2 文字列からシードを作る

<?php
$string
= "My string seed";

// $string を128ビットのシードに変換するために、
// SHA-256 を切り捨てる形で文字列をハッシュ化し、バイナリで出力します。
// 同じ文字列を使うと、同じランダムなシーケンスが生成されます。
$e = new \Random\Engine\PcgOneseq128XslRr64(
substr(hash('sha256', $string, binary: true), 0, 16)
);

echo
bin2hex($e->generate()), "\n";
?>

上の例の出力は以下となります。

8333ef59315b16d8
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top