как получить рандомное число из диапазона в том числе и с плавающей точкой? 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