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>"