Как получить случайное поплавок между диапазоном с x десятичными цифрами в PHP?Как получить случайный float с x десятичными цифрами в PHP?
Например, как я могу получить случайный поплавок с 5 десятичными знаками от 0 до 20?
Как получить случайное поплавок между диапазоном с x десятичными цифрами в PHP?Как получить случайный float с x десятичными цифрами в PHP?
Например, как я могу получить случайный поплавок с 5 десятичными знаками от 0 до 20?
Решение, предложенное Марк Бейкер, вероятно, является лучшим. Кроме того, вы не должны жестко закодировать эти большие цифры для улучшения читабельности:
$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
означает число с плавающей точкой с пятью десятичными знаками.
Спасибо, он работает. 5 десятичных знаков были всего лишь примером. На данный момент я не знаю, сколько мне нужно. – talmo
Конечно, поэтому я предложил использовать '$ десятичные знаки' вместо этих больших чисел. Меня беспокоило, почему вам нужно точное количество десятичных знаков. Думаю, это для презентации, а не для дальнейших расчетов. В этом случае вы можете использовать 'sprintf', который возвращает число как' string', что отлично подходит для вывода. Кстати, вы можете отбросить его обратно на 'float', но это не так приятно :) –
Получите ранд между 0 и 2000000, затем разделите его на 100000 –