Создаёт новый объект движка xoshiro256**

# Random\Engine\Xoshiro256StarStar::__construct

(PHP 8 >= 8.2.0)

Random\Engine\Xoshiro256StarStar::__construct — Создаёт новый объект движка xoshiro256**

### Описание

public function Random\Engine\Xoshiro256StarStar::__construct(string|int|null `$seed` = `null`)

### Список параметров

`seed`

  Способ заполнения внутреннего 256-битного (32 байта) состояния, который состоит из четырёх 64-битных целых чисел без знака, зависит от типа в параметре `seed`.

  Type | Описание
  --- | ---
  null | Заполняет состояние 32 случайными байтами, которые выдал генератор CSPRNG.
  int | Заполняет состояние четырьмя последовательными значениями, сгенерированными по алгоритму SplitMix64, который заполнил параметр `seed`, интерпретированным как 64-битное целое число без знака.
  string | Заполняет состояние, интерпретируя 32-байтовую строку (string) как четыре 64-битных целых числа без знака.

### Ошибки

- При передаче в параметр `seed` значения string, длина которого не равна 32 байтам, метод выбросит ошибку ValueError.
- При передаче в параметр `seed` значения string, которое состоит из 32 нулевых байтов (`"\x00"`), метод выбросит ошибку ValueError.

### Примеры

Пример #1 Пример работы метода Random\Engine\Xoshiro256StarStar::__construct()

    <?php

    // Используется случайное 256-битное начальное число
    $e = new \Random\Engine\Xoshiro256StarStar();

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

    ?>

Пример #2 Выведение значения из строки (string)

    <?php

    $string = "My string seed";

    // Хеширование строки с помощью SHA-256, используя двоичный вывод, чтобы превратить
    // $string в 256-битное значение. Передача одной и той же строки возвращает
    // одну и ту же случайную последовательность
    $e = new \Random\Engine\Xoshiro256StarStar(
        hash('sha256', $string, binary: true)
    );

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

Результат выполнения приведённого примера:

    6e013453678388c2

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