【PHP】指定した値の範囲でランダムな少数の値を生成する方法

  • 2017年11月30日
  • PHP

ランダムな整数の生成なら、rand() 関数が用意されていますが、今回は少数値が必要だったので、生成方法をご紹介。
PHPのマニュアルに掲載されていたものですから、少し調べればわかるやり方ではありますが、今後も使うことがあるだろうという事で、備忘録も兼ねています。

 

まずはランダムな整数の生成から。
こちらは簡単で、rand() 関数を使用するだけ。

// rand() 関数
int rand ( int $min , int $max );

// 実行例
$random = rand(1, 10);

引数は省略可ですが、指定した場合は、この範囲内で収まる値で乱数を返してくれます。
上記の実行例だと、1から10の範囲内の乱数が生成されます。

PHPマニュアルはこちらからご確認ください。
http://php.net/manual/ja/function.rand.php

 

お次はランダムな少数値の生成方法。
この場合は、mt_getrandmax()という、mt_rand() 関数が呼ばれた際に返される最大の値を返す関数を利用しています。

なお、mt_rand() はランダムな整数を生成する関数です。
乱数を返す機能としては rand() 関数との違いはなさそうですが、PHPマニュアルによると、rand()よりも4倍以上高速に乱数を生成してくれるのだとか。

ランダムな少数を返す関数は下記の通り。

// ランダムな少数値を返す
function randomFloat($min = 0, $max = 1) {
    return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}

// 実行例
$random = randomFloat(0, 100);

こちらを実行すると、0から100の範囲でランダムな少数値を返してくれます。
ちなみに、こちらの関数も引数は省略可です。

 

と、いう事で、ランダムな少数値の生成方法でした。
なお、0から1の間で乱数を返す関数でしたら、lcg_value() という関数もあるそうでしたが、こちらは乱数の精度があまりよくないとのこと。
また、値の範囲が0から1というのも、少し汎用性が悪い場合がありそうですから、小数値の乱数生成なら上記の関数がおすすめです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG