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);
}?>
lcg_value
(PHP 4, PHP 5)
lcg_value — Combined linear congruential generator
Description
float lcg_value ( void )
lcg_value() returns a pseudo random number in the range of (0, 1). The function combines two CGs with periods of 2^31 - 85 and 2^31 - 249. The period of this function is equal to the product of both primes.
Return Values
A pseudo random float value in the range of (0, 1)
User Contributed Notes
lcg_value
lcg_value
daniel dot baulig at gmx dot de
04-Feb-2010 03:16
04-Feb-2010 03:16
jfdsmit at gmail dot com
17-Dec-2007 02:44
17-Dec-2007 02:44
Be warned, the function provided by mr dot joebert at gmail dot com has a serious tendency to return $min more often than anything else, especially when $min and $max are close. It also will never return $max if $min is negative. rok kralj gmail com's implementation does not have this problem, as it operates on the difference between $max and $min instead of $max itself.
rok kralj gmail com
05-Jun-2007 03:54
05-Jun-2007 03:54
An elegant way to return random float between two numbers:
<?php
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
?>