2015-10-01 2 views
1

Как получить случайное поплавок между диапазоном с x десятичными цифрами в PHP?Как получить случайный float с x десятичными цифрами в PHP?

Например, как я могу получить случайный поплавок с 5 десятичными знаками от 0 до 20?

+0

Получите ранд между 0 и 2000000, затем разделите его на 100000 –

ответ

1

Решение, предложенное Марк Бейкер, вероятно, является лучшим. Кроме того, вы не должны жестко закодировать эти большие цифры для улучшения читабельности:

$min = 0; 
$max = 20; 
$decimals = 5; 

$divisor = pow(10, $decimals); 
$randomFloat = mt_rand($min, $max * $divisor)/$divisor; 

Я просто удивляюсь, почему вам нужно ровно 5 знаков после запятой. Если это только для презентации, это означает, что вы собираетесь выводить их в виде строки, вы можете использовать это решение:

$num = $min + lcg_value() * ($max - $min); 
$randomFloat = sprintf("%+.5f", $num); 

PHP функцию lgc_value возвращает случайный (псевдо) число случайных поплавка в диапазоне (0, 1). Функция sprintf возвращает строку, переданную в соответствии с форматом. %+.5f означает число с плавающей точкой с пятью десятичными знаками.

+0

Спасибо, он работает. 5 десятичных знаков были всего лишь примером. На данный момент я не знаю, сколько мне нужно. – talmo

+1

Конечно, поэтому я предложил использовать '$ десятичные знаки' вместо этих больших чисел. Меня беспокоило, почему вам нужно точное количество десятичных знаков. Думаю, это для презентации, а не для дальнейших расчетов. В этом случае вы можете использовать 'sprintf', который возвращает число как' string', что отлично подходит для вывода. Кстати, вы можете отбросить его обратно на 'float', но это не так приятно :) –