乱数生成器を初期化する

# srand

(PHP 4, PHP 5, PHP 7, PHP 8)

srand — 乱数生成器を初期化する

### 説明

function srand(?int `$seed` = `null`, int `$mode` = `MT_RAND_MT19937`): void

シード `seed` で乱数生成器を初期化します。 `seed` に 値を指定しない場合はランダムな値が設定されます。

> 注意: srand() または mt_srand() によりランダム数生成器にシードを与える必要はありません。 これは、この処理が自動的に行われるためです。

警告

Mt19937 (メルセンヌ・ツイスター) エンジンは、シードとして32ビットの整数だけを受け入れます。よって、219937-1 もの周期を持つにも関わらず、あり得るランダムなシーケンスの数はたかだか 232 (つまり 4,294,967,296) しかありません。

暗黙、または明示的にランダムなシードに依存する場合、 重複がそれ(4,294,967,296 個)よりもかなり早く発生します。 誕生日のパラドックスによると、80,000 個以下のランダムなシードを生成した場合でも、 50% の確率でシードが重複します。 ざっと 30,000 個のランダムなシードを生成すると、10% の確率でシードが重複します。

このため、無視できる確率以上に重複したシーケンスが発生してはいけないアプリケーションでは、Mt19937 は適していません。 再現可能なシードが必須の場合、 Random\Engine\Xoshiro256StarStar と Random\Engine\PcgOneseq128XslRr64 が、ずっと大きなシードをサポートしているため、衝突の可能性が低いです。 再現可能なシードが必須でない場合、 Random\Engine\Secure が、暗号学的にセキュアなランダム性を提供します。

> 注意: PHP 7.1.0 以降、srand() は、mt_srand() のエイリアスになりました。

### パラメータ

`seed`

  `seed` をシードとした LCG を使って生成された値で 埋められるステート。 32ビットの符号なし整数値として解釈されます。

  `seed` が省略されるか `null` の場合、 ランダムな符号なし 32ビットの整数が使われます。

### 戻り値

値を返しません。

### 変更履歴

バージョン | 説明
--- | ---
8.3.0 | `seed` は、nullable になりました。
7.1.0 | srand() は、 mt_srand() の エイリアスになりました。

### 参考

- rand() - 乱数を生成する
- getrandmax() - 乱数の最大値を取得する
- mt_srand() - メルセンヌ・ツイスター乱数生成器にシードを指定する

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