PHP入門 数学関数 乱数を生成する(rand/mt_rand/lcg_value関数)

乱数を生成する方法を解説しています。

構文:abs関数

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

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

float lcg_value(void)
$min最小値
$max最大値

乱数を生成するには「rand」関数や「mt_rand」関数、または「lcg_value」関数を使います。rand関数とmt_rand関数は0からgetrandmax関数やmt_getrandmax関数の返り値の範囲、または、引数で指定した範囲の乱数を返します。lcg_value関数は0から1の範囲の疑似乱数を浮動小数点で返します。mt_rand関数は、rand関数より大きな乱数値を高速に生成することができます。このため、一般的にはmt_rand関数を使います。

乱数生成器にシードを与える

PHP4.2.0より前のバージョンでは、乱数生成器にシードを与えて初期化する必要があります。乱数生成器にシードを与えるには「srand」関数、または「mt_srand」関数を使用します。

//マイクロ秒でシードを指定する関数
function make_seed(){
  list($usec, $sec) = explode('',microtime());
  return (float)$sec + ((float) $usec * 100000)
}

例:

<?php
//乱数を生成する
echo rand(),"<br>";
echo mt_rand(),"<br>";

//1~10の範囲の乱数を生成する
echo rand(1,10),"<br>";
echo mt_rand(1,10),"<br>";
//0~1の範囲の疑似乱数を生成する
echo lcg_value(),"<br>"
実行結果
実行結果