An elegant way to return random float between two numbers:
<?php
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
?>
(PHP 4, PHP 5, PHP 7, PHP 8)
lcg_value — 複合線形合同法
lcg_value() は、(0, 1)の範囲の疑似乱数を返します。 この関数は、周期が 2^31 - 85 および 2^31 - 249 の 2 つの CG を組み合わせます。 この関数の周期はこれら 2 つの素数の積と等価です。
この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。
この関数にはパラメータはありません。
0.0 と 1.0 の範囲の疑似乱数(0.0 と 1.0 を含みます)を、 浮動小数点数で返します。
An elegant way to return random float between two numbers:
<?php
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
?>
Choose your weapon:
<?php
function mt_randf($min, $max)
{
return $min + abs($max - $min) * mt_rand(0, mt_getrandmax())/mt_getrandmax();
}
function lcg_randf($min, $max)
{
return $min + lcg_value() * abs($max - $min);
}
function randf($min, $max)
{
return $min + rand(0,getrandmax()) / getrandmax() * abs($max - $min);
}?>