【PHP】数値をランダムに取得する関数の使い方

アイキャッチ画像randPHP
この記事は約4分で読めます。
スポンサーリンク

【PHP】数値をランダムに取得する関数の使い方

【PHP】 rand関数の使い方(数値をランダムに取得する)

php3~ で使用できます。

rand関数 : 書式
rand ([ 生成する最小値, 生成する最大値])

戻り値:ランダムな数値

 rand関数はランダムな数値を生成します。mt_rand関数(php3.0.6~)は、この関数の改良版で、精度などが改善されています。
この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。

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

rand関数 : 使用例
  • 数値をランダムに取得する
    echo rand(); →ランダムな数値(例:1001)を出力
  • 1~100までの数値でランダムな数値を生成する
    echo rand( 1, 100); →ランダムな数値(例:11)を出力
乱数の最大値を取得するには、getrandmax関数(php3~)を使用します。
 echo getrandmax(); →「32767」を出力
(Windows のような)いくつかのプラットフォームでは、getrandmax() は 32767 と小さな値となっています。 32767 より広い範囲にしたい場合、 min および max を指定することで、 これより大きな範囲の乱数を生成することができます。 もしくは、 mt_rand() をかわりに使用してみてください。
php変更履歴

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

【PHP】 mt_rand関数の使い方(数値をランダムに取得する)

php3.0.6~ で使用できます。

mt_rand関数 : 書式
mt_rand([ 生成する最小値, 生成する最大値])

戻り値:ランダムな数値

 mt_rand関数はランダムな数値を生成します。同じようにランダムな数値を生成するrand関数(php3~)から精度などが改良された関数です。
 2つの引数を省略すると、0からRAND_MAX(例:2147483647)までの間で数値を生成します。
mt_rand関数 : 使用例
  • 数値をランダムに取得する
    echo mt_rand(); →ランダムな数値「13579」を出力
  • 指定範囲でランダムな数値を取得する
    echo mt_rand(1, 100); →ランダムな数値「19」を出力
乱数の最大値を取得するには、mt_randmax関数(php3.0.6~)を使います。
 echo mt_getrandmax(); →最大値「例:2147483647」を出力
この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。

php変更履歴

php7.2.0~mt_rand() 関数の モジュロバイアスに関するバグが修正されました。これは、特定のシードを用いて生成したシーケンスは、64bitマシン上での PHP7.1 と出力が異なる可能性があることを意味します。
php7.1.0~rand() は、mt_rand() の エイリアスになりました。
php7.1.0~mt_rand() は、固定の、正しいバージョンのメルセンヌツイスタ の アルゴリズム を使うように 更新されました。 古い振る舞いに戻すには、 mt_srand() 関数の第二引数に MT_RAND_PHP を指定して使ってください。
php5.3.4~max < min の場合に E_WARNING を発行して FALSE を返すようになりました。

関連リンク

PHPトップページ
PHP入門 & 関数リファレンス
PHPの初心者からベテランまで活用できるページです。初めての方はもちろん、もう一度基礎から学びなおしたい方は、基礎知識のページを順に読んで理解しましょう。ベテランの方向けには、関数の書式・パラメーターを調べられる構成になっています。PHPプログラム作成時にご活用下さい。
タイトルとURLをコピーしました