rand

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

rand乱数を生成する

説明

rand(): int
rand(int$min, int$max): int

オプションの引数 min,max を省略してコールした場合、rand() は 0 と getrandmax() の間の擬似乱数(整数)を返します。 例えば、5 から 15 まで(両端を含む)の乱数を得たい場合、 rand(5, 15) とします。

警告

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

注意: (Windows のような)いくつかのプラットフォームでは、getrandmax() は 32767 と小さな値となっています。 32767 より広い範囲にしたい場合、 min および max を指定することで、 これより大きな範囲の乱数を生成することができます。 もしくは、 mt_rand() をかわりに使用してみてください。

注意: PHP 7.1.0 以降、rand() は、 mt_rand() と同じ乱数生成器を使います。 下位互換性を保持するために、mt_rand()false を返すのと対照的に、rand()maxmin よりも小さいことを許します。

パラメータ

min

返す値の最小値 (デフォルトは 0)。

max

返す値の最大値 (デフォルトは getrandmax())。

返り値

min (あるいは 0) から max (あるいは getrandmax()、それぞれ端点を含む) までの間の疑似乱数値を返します。

変更履歴

バージョン説明
7.2.0rand() 関数のモジュロバイアスに関するバグが 修正されました。 これは、特定のシードから生成されるシーケンスが 64bit PHP 7.1 のそれとは異なる可能性があるということです。
7.1.0rand() は、mt_rand()エイリアスになりました。

例1 rand() の例

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

echo 
rand(515);
?>

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

7771
22264
11

注意

警告

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

参考

  • srand() - 乱数生成器を初期化する
  • getrandmax() - 乱数の最大値を取得する
  • mt_rand() - メルセンヌ・ツイスター乱数生成器を介して乱数値を生成する
  • random_int() - 暗号論的に安全な疑似乱数を生成する
  • random_bytes() - 暗号論的に安全な、疑似ランダムなバイト列を生成する
  • openssl_random_pseudo_bytes() - 疑似ランダムなバイト文字列を生成する