PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのmt_rand()関数とは?乱数生成の使い方とサンプルコードを解説

mt_rand()関数の定義と使い方

関数名に含まれる「mt」というプレフィックスは、メルセンヌ・ツイスター(Mersenne Twister)を意味しています。mt_rand()関数は、メルセンヌ・ツイスター乱数生成アルゴリズムを使用して整数値を返す関数です。PHPのrand()関数の代替(ドロップインリプレースメント)としてそのまま置き換えて使うことができます。

引数を指定しない場合、戻り値の範囲はデフォルトで0からmt_getrandmax()が返す値までとなります。64ビット版Windows OSの場合、最大値は2147483647です。mt_rand()関数は、引数なしで呼び出すことも、minとmaxの2つのパラメータを指定して呼び出すことも可能です。

この関数が返す値は常に整数型(int)です。

構文

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

パラメータ

番号パラメータと説明
1min
乱数を取得する範囲の下限です。デフォルト値は0です。
2max
乱数を取得する範囲の上限です。デフォルト値はmt_getrandmax()の戻り値です。

戻り値

PHPのmt_rand()関数は、メルセンヌ・ツイスター乱数生成手法を用いて、minからmaxまでの間の整数値を返します。この関数はrand()関数の約4倍の速度で動作するという特徴があります。ただし、暗号化目的での使用には適していない点に注意してください。セキュリティに関わる処理にはrandom_int()やrandom_bytes()などの暗号学的に安全な関数を使用することが推奨されます。

対応するPHPバージョン

この関数はPHP 4.x、PHP 5.x、PHP 7.xのすべてのバージョンで利用可能です。

使用例①:引数なしで呼び出す

次の例では、引数を指定せずにmt_rand()を呼び出して乱数を取得しています。

<?php
   echo "引数なしのmt_rand() = " . mt_rand() . "\n";
   echo "もう一度、引数なしのmt_rand() = " . mt_rand() . "\n";
?>

出力結果

乱数であるため、実行するたびに異なる値が出力される可能性があります。

引数なしのmt_rand() = 173620951
もう一度、引数なしのmt_rand() = 749065865

使用例②:minとmaxを指定する

次の例では、mt_rand()関数にminとmaxの引数を指定して、特定の範囲内の乱数を取得しています。

<?php
   echo "mt_rand(11,30) = " . mt_rand(11,30) . "\n";
   echo "mt_rand(11,30) = " . mt_rand(11,30) . "\n";
?>

出力結果

この場合も乱数のため、実行ごとに異なる値が返されます。

mt_rand(11,30) = 24
mt_rand(11,30) = 14

使用例③:小数を指定した場合の動作

minおよびmaxパラメータにfloat型(小数)の値を渡した場合、小数点以下は切り捨てられます。

<?php
   echo "mt_rand(10.55,50.95) = " . mt_rand(10.55, 50.95) . "\n";
?>

出力結果

実行結果の一例は以下のとおりです。

mt_rand(10.55,50.95) = 31
  1. PHPのgregoriantojd()関数とは?構文・パラメータ・使用例を解説

    PHPのgregoriantojd()関数は、グレゴリオ暦(現在広く使われている暦)の日付をユリウス通日(Julian Day Count)に変換し、その結果としてユリウス日番号を返す関数です。ユリウス通日は、天文学や歴史上の日付計算などで利用される連続した日数表現であり、異なる暦同士の日付比較や計算を簡単に行えるのが特徴です。 注意 − グレゴリオ暦として有効な範囲は、紀元前4714年11月25日から紀元9999年12月31日以降までとなっています。この範囲外の日付を指定すると、正しい結果が得られない場合があります。 構文 GregorianToJD(month, date, year)

  2. PHPのfscanf()関数とは?使い方とフォーマット指定子を徹底解説

    PHPのfscanf()関数は、オープン中のファイルから入力を読み込み、指定されたフォーマットに従って解析するための関数です。パラメータを2つだけ渡して呼び出した場合、解析結果の値が配列として返されます。基本構文fscanf(file_pointer, format, mixed)パラメータの詳細file_pointer − fopen()関数を使って作成されたファイルシステムポインタリソースを指定します。format − 読み込むデータの形式(フォーマット)を指定します。使用できる主なフォーマット指定子は以下の通りです。%% − パーセント記号(%)そのものを返す%b − 2進数として読み込