古いlibcの多くの乱数発生器は、怪しげであるか特性が不明であったり
し、また低速でした。デフォルトでは、PHP は
rand()
においてlibcの乱数発生器を使用します。
mt_rand()
関数は、その代替品となるものです。 この関数は、既知の特性を有する乱数生成器である Mersenne Twister
を使用し、暗号用途に適した乱数を生成します。 この関数は、平均的な libc の相当品よりも 4 倍高速です。
Mersenne Twister のホームページは、
http://www.math.keio.ac.jp/~matumoto/emt.html
にあります。
オプションの引数
min
,
max
を付けずにコー ルした場合、
mt_rand()
は 0 から
RAND_MAX
の間の擬似乱数値を返します。 例えば、5から15まで(端点を含む)の間の乱数値を得たい場合には、
mt_rand(5,15)
として下さい。
使用する前に
mt_srand()
により乱数生成器にシー ドを与えることを忘れないようにして下さい。
注意 3.0.7より前のバージョンでは、 max の意味は range でした。これらのバージョンにおいて 同じ結果を得るために簡単な例を示すと、5から15までの乱数を得たい 場合には mt_rand (5, 11) とする必要があります。
mt_srand()
,
mt_getrandmax()
,
srand()
,
rand()
,
getrandmax()
も参照下さい。