(PHP 4, PHP 5)
mt_rand — よりよい乱数値を生成する
$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()、それぞれ端点を含む)
までの間のランダムな整数値を返します。
max
が min
より小さい場合は
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(5, 15);
?>
上の例の出力は、 たとえば以下のようになります。
1604716014 1478613278 6
この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、 openssl_random_pseudo_bytes() を使いましょう。
64 ビット版の PHP で
max
を 2^32
より大きくすると、 mt_rand()
の返り値の分布にバイアスがかかり、偶数よりになります。