(PHP 8 >= 8.2.0)
Random\Engine\Xoshiro256StarStar::__construct — 新しい xoshiro256** エンジンを作成する
$seed
= null
)
この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
seed
符号なし64ビット整数で構成される 256ビット(32バイト) の内部ステートが、
どのように与えられるかは seed
のタイプに依存します。
タイプ | 説明 |
---|---|
null | ランダムな32バイトのステートを、 CSPRNG を使って生成し、埋めます。 |
int |
seed
を64ビットの符号なし整数と解釈し、
その値を SplitMix64 アルゴリズムに与えて生成した、
4つの連続した値でステートを埋めます。
|
string | 32バイトの文字列を、4つのリトルエンディアン、 かつ符号なし64ビットの整数と解釈してステートを埋めます。 |
seed
が文字列で、長さが32バイトでなかった場合、
ValueError がスローされます。
seed
が文字列で、32 個の NULバイト("\x00"
) で埋められていた場合、
ValueError がスローされます。
例1 Random\Engine\Xoshiro256StarStar::__construct() の例
<?php
// ランダムな256ビットのシードを使います。
$e = new \Random\Engine\Xoshiro256StarStar();
$r = new \Random\Randomizer($e);
?>
例2 文字列からシードを作る
<?php
$string = "My string seed";
// $string を256ビットのシードに変換するために、SHA-256 で文字列をハッシュ化し、
// バイナリで出力します。
// 同じ文字列を使うと、同じランダムなシーケンスが生成されます。
$e = new \Random\Engine\Xoshiro256StarStar(
hash('sha256', $string, binary: true)
);
echo bin2hex($e->generate()), "\n";
?>
上の例の出力は以下となります。
6e013453678388c2