(PHP 8 >= 8.2.0)
Random\Engine\PcgOneseq128XslRr64::__construct — 128 ビットのステートと XSL RR 変換を使う、新しいPCGエンジンを作成する
$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