Necesito generar un número aleatorio, en el décimo lugar entre 2 decimales en PHP.Usar PHP para generar decimales aleatorios entre dos decimales
Ej. Un número de rand entre 1.2 y 5.7. Volvería 3.4
¿Cómo puedo hacer esto?
Necesito generar un número aleatorio, en el décimo lugar entre 2 decimales en PHP.Usar PHP para generar decimales aleatorios entre dos decimales
Ej. Un número de rand entre 1.2 y 5.7. Volvería 3.4
¿Cómo puedo hacer esto?
Se puede utilizar:
rand ($min*10, $max*10)/10
o incluso mejor:
mt_rand ($min*10, $max*10)/10
Se podría hacer algo como:
rand(12, 57)/10
función aleatoria de PHP le permite utilizar solamente los límites enteros, pero a continuación, puede dividir el número aleatorio resultante por 10.
Una solución más general sería:
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);
para quienes persiguen esta solución, hoy en día un enfoque ligeramente mejor sería incorporar la función 'count_decimals()' como un cierre dentro de 'random()', por lo que está oculta del alcance global. – igorsantos07
Es tonto, pero necesitaba una función. A continuación: función drand ($ low, $ high) { \t \t return mt_rand ($ low * 100, $ high * 100)/100; \t} –