メルセンヌ・ツイスター乱数生成器を介して乱数値を生成する

# mt_rand

(PHP 4, PHP 5, PHP 7)

mt_rand — メルセンヌ・ツイスター乱数生成器を介して乱数値を生成する

### 説明

mt_rand ( void ) : int
mt_rand ( int `$min` , int `$max` ) : int
警告

この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。

古い libc の多くの乱数発生器は、怪しげであるか特性が不明であったりし、 また低速でした。 mt_rand() 関数は、古い rand() の代替品となるものです。 この関数は、その特性が既知の乱数生成器 » メルセンヌ・ツイスター を使用し、 平均的な libc の rand()よりも 4 倍以上高速に乱数を生成します。

オプションの引数 `min`,`max` を付けずに コールした場合、mt_rand() は 0 から mt_getrandmax() の間の擬似乱数値を返します。 例えば、5 から 15 まで(端点を含む)の間の乱数値を得たい場合には mt_rand(5, 15) としてください。

### パラメータ

`min`

  オプションで指定する、返される値の最小値 (デフォルトは 0)。

`max`

  オプションで指定する、返される値の最大値 (デフォルトは mt_getrandmax())。

### 返り値

`min` (あるいは 0) から `max` (あるいは mt_getrandmax()、それぞれ端点を含む) までの間のランダムな整数値を返します。 `max` が `min` より小さい場合は `FALSE` を返します。

### 変更履歴

バージョン | 説明
--- | ---
7.1.0 | rand() は、mt_rand() のエイリアスになりました。
7.1.0 | mt_rand()has been updated to use the fixed, correct, version of the メルセンヌ・ツイスター algorithm. To fall back to the old behaviour, use mt_srand() with `MT_RAND_PHP` as the second paramter.
5.3.4 | `max` < `min` の場合に `E_WARNING` を発行して `FALSE` を返すようになりました。

### 例

例1 mt_rand() の例

`<?php
echo mt_rand() . "\n";
echo mt_rand() . "\n";
echo mt_rand(5, 15);
?>`

上の例の出力は、 たとえば以下のようになります。

    1604716014
    1478613278
    6

### 注意

警告

`min` から `max` までの幅を mt_getrandmax() の範囲内におさめる必要があります。 つまり、(`max` - `min`) <= mt_getrandmax() でなければいけないということです。この範囲をこえてしまうと、 mt_rand() が返す値のランダム性が、 本来あるべき姿よりも低くなってしまいます。

### 参考

- mt_srand() - メルセンヌ・ツイスター乱数生成器にシードを指定する
- mt_getrandmax() - 乱数値の最大値を表示する
- random_int() - Generates cryptographically secure pseudo-random integers
- random_bytes() - Generates cryptographically secure pseudo-random bytes
- openssl_random_pseudo_bytes() - 疑似乱数のバイト文字列を生成する
- rand() - 乱数を生成する