Math 関数
PHP Manual

mt_rand

(PHP 4, PHP 5)

mt_randよりよい乱数値を生成する

説明

int mt_rand ( void )
int mt_rand ( int $min , int $max )

古い libc の多くの乱数発生器は、怪しげであるか特性が不明であったりし、 また低速でした。デフォルトでは、PHP は rand() において libc の乱数発生器を使用します。 mt_rand() 関数は、その代替品となるものです。 この関数は、その特性が既知の乱数生成器 »  Mersenne Twister を使用し、 平均的な 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()、それぞれ端点を含む) までの間のランダムな整数値を返します。 maxmin より小さい場合は FALSE を返します。

変更履歴

バージョン 説明
5.3.4 max < min の場合に E_WARNING を発行して FALSE を返すようになりました。
4.2.0 乱数生成器が自動的にシードを生成するようになりました。

例1 mt_rand() の例

<?php
echo mt_rand() . "\n";
echo 
mt_rand() . "\n";

echo 
mt_rand(515);
?>

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

1604716014
1478613278
6

注意

警告

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

警告

64 ビット版の PHP で max2^32 より大きくすると、 mt_rand() の返り値の分布にバイアスがかかり、偶数よりになります。

参考


Math 関数
PHP Manual