128 ビットのステートと XSL RR 変換を使う、新しいPCGエンジンを作成する

# Random\Engine\PcgOneseq128XslRr64::__construct

(PHP 8 >= 8.2.0)

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

### 説明

public function 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open