Вопрос по php, random – Используйте PHP для генерации случайного десятичного числа между двумя десятичными знаками

22

Мне нужно сгенерировать случайное число с точностью до 10 места между двумя десятичными знаками в PHP.

Ex. Номер ранда от 1,2 до 5,7. Это вернуло бы 3,4

Как я могу это сделать?

Это глупо, но мне нужна была функция. Следующее: функция drand ($ low, $ high) {return mt_rand ($ low * 100, $ high * 100) / 100; } Vael Victus

Ваш Ответ

3   ответа
39

Вы можете использовать

rand ($min*10, $max*10) / 10

или даже лучше:

mt_rand ($min*10, $max*10) / 10
4

Ты мог бы сделать что-то вроде:

rand(12, 57) / 10

лучайная функция PHP позволяет вам использовать только целочисленные ограничения, но затем вы можете разделить полученное случайное число на 10.

4

Более общее решение будет:

function count_decimals($x){
   return  strlen(substr(strrchr($x+"", "."), 1));
}

public function random($min, $max){
   $decimals = max(count_decimals($min), count_decimals($max));
   $factor = pow(10, $decimals);
   return rand($min*$factor, $max*$factor) / $factor;
}

$answer = random(1.2, 5.7);
для тех, кто ищет это решение, в настоящее время лучше подходить к внедрениюcount_decimals() действует как замыкание внутри этогоrandom(), поэтому он скрыт от глобальной области видимости. igorsantos07

Похожие вопросы