как получить рандомное число из диапазона в том числе и с плавающей точкой? Decimal

К примеру есть rand() но там только int
            
А как сделать чтобы на выходе получалось число из диапазонов таких число должно быть `Decimal` на выходе:
```
$rand = rand(1.12, 5.45); или //типа 3.82
$rand = rand(14, 20.5); или //20.10
$rand = rand(5, 8); или //2.01
```
Спасибо



вот этот вариант не работает
static function mt_rand_float($min, $max, $countZero = '0') {
        $countZero = +('1'.$countZero);
        $min = floor($min*$countZero);
        $max = floor($max*$countZero);
        return mt_rand($min, $max) / $countZero;
    }

return self::mt_rand_float(1.22, 5.8); 
//mt_rand(): Argument #1 ($min) must be of type int, float given

Ответы (1 шт):

Автор решения: splash58

Просто переведите целые в вещественные в нужный диапазон

<?php
function float_rand($min, $max){
    return $min + ($max-$min) * (float)rand() / (float)getrandmax();
}

echo float_rand(1.25, 7.3) . "\n";
echo float_rand(1.25, 7.3) . "\n";
echo float_rand(1.25, 7.3) . "\n";
echo float_rand(1.25, 7.3) . "\n";


2.4398327738931
6.1199881539075
3.1694941472819
3.1346495556108
→ Ссылка