乱数生成器および、乱数関連の関数

目次

Random\Randomizer クラス

はじめに

Random\Engine が提供するランダムな値に対する、高レベルインターフェイスを提供します。

クラス概要

final Random\Randomizer
/* プロパティ */
public readonly Random\Engine $engine;
/* メソッド */
public __construct(Random\Enginenull $engine = null)
public string getBytes(int $length)
public string getBytesFromString(string $string, int $length)
public float getFloat(float $min, float $max, Random\IntervalBoundary $boundary = Random\IntervalBoundary::ClosedOpen)
public int getInt(int $min, int $max)
public float nextFloat()
public int nextInt()
public array pickArrayKeys(array $array, int $num)
public array __serialize()
public array shuffleArray(array $array)
public string shuffleBytes(string $bytes)
public void __unserialize(array $data)

プロパティ

engine

Random\Randomizer のメソッドに与えるランダムな値の、低レベルのソース。

Random\Engine インターフェイス

はじめに

Random\Engine は、ランダムな値の低レベルなソースを提供します。 ここから返されたランダムな値は、 高レベルAPIで操作することで消費されます。 Random\Engine インターフェイスを使うと、 ランダムな値を生成するためのアルゴリズムを切り替えることができます。 何故切り替えるのかというと、 それぞれのアルゴリズムは特定のユースケースに応じて、 異なるトレードオフの特性を持つからです。 とても高速に値を生成するものの、 生成するランダムな値の品質は低いアルゴリズムもあれば、 それよりは低速ですが、よりよいランダムな値を生成するアルゴリズムもあります。 さらに、Random\Engine\Secure が提供する、 暗号学的にセキュアな、ランダムな値を生成するものまであります。

PHP は 異なるユースケースに対応した、 複数の Random\Engine を提供します。 とても高速なパフォーマンスを追求したり、 再現可能なシーケンスをアプリケーション側で必須としない限り、 CSPRNG をバックエンドにした Random\Engine\Secure を、 デフォルトとして選択することを推奨します。

インターフェイス概要

Random\Engine
/* メソッド */
public string Random\Engine::generate()

Random\CryptoSafeEngine インターフェイス

はじめに

Random\Engine が、暗号学的にセキュアなランダム値を返すことを示す、マーカーインターフェイスです。

インターフェイス概要

Random\CryptoSafeEngine extends Random\Engine
/* 継承したメソッド */
public string Random\Engine::generate()

Random\Engine\Secure クラス

はじめに

オペレーティングシステムの CSPRNG を使い、暗号学的にセキュアな、ランダムな値を生成します。

この Random\Engine が生成するランダムな値は、 暗号化キーのような長期間使うシークレットを含む、すべてのアプリケーションで適切です。

とても高速なパフォーマンスを追求したり、 再現可能なシーケンスをアプリケーション側で必須としない限り、 Random\Engine\Secure エンジンを安全なデフォルトの選択として推奨します。

クラス概要

final Random\Engine\Secure
implements Random\CryptoSafeEngine
/* メソッド */
public string generate()

Random\Engine\Mt19937 クラス

はじめに

» Mt19937 (メルセンヌ・ツイスター) アルゴリズムを実装したクラスです。

クラス概要

final Random\Engine\Mt19937
implements Random\Engine
/* メソッド */
public __construct(intnull $seed = null, int $mode = MT_RAND_MT19937)
public array __debugInfo()
public string generate()
public array __serialize()
public void __unserialize(array $data)

Random\Engine\PcgOneseq128XslRr64 クラス

はじめに

128 ビットのステートと、XSL-RR 変換を用いて、64 ビットの出力を生成する » Permuted congruential generator (PCG) を実装したクラスです。

クラス概要

final Random\Engine\PcgOneseq128XslRr64
implements Random\Engine
/* メソッド */
public __construct(stringintnull $seed = null)
public array __debugInfo()
public string generate()
public void jump(int $advance)
public array __serialize()
public void __unserialize(array $data)

Random\Engine\Xoshiro256StarStar クラス

はじめに

» xoshiro256** アルゴリズムを実装したクラスです。

クラス概要

final Random\Engine\Xoshiro256StarStar
implements Random\Engine
/* メソッド */
public __construct(stringintnull $seed = null)
public array __debugInfo()
public string generate()
public void jump()
public void jumpLong()
public array __serialize()
public void __unserialize(array $data)

Random\RandomError クラス

はじめに

ランダムな値を使ったり生成したりする際に発生する、Error の基底クラスです。

クラス概要

Random\RandomError
extends Error
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()

Random\BrokenRandomEngineError クラス

はじめに

たとえば、生成される値がとても強く偏っているなどの理由で、 使っている Random\Engine が壊れていることを示します。

クラス概要

Random\BrokenRandomEngineError
extends Random\RandomError
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public Error::__construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string Error::getMessage()
final public Throwablenull Error::getPrevious()
final public int Error::getCode()
final public string Error::getFile()
final public int Error::getLine()
final public array Error::getTrace()
final public string Error::getTraceAsString()
public string Error::__toString()
private void Error::__clone()

Random\RandomException クラス

はじめに

ランダムな値を使ったり生成したりする際に発生する、Exception の基底クラスです。

クラス概要

Random\RandomException
extends Exception
/* 継承したプロパティ */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private Throwablenull $previous = null;
/* 継承したメソッド */
public __construct(string $message = "", int $code = 0, Throwablenull $previous = null)
final public string getMessage()
final public Throwablenull getPrevious()
final public int getCode()
final public string getFile()
final public int getLine()
final public array getTrace()
final public string getTraceAsString()
public string __toString()
private void __clone()