2012-05-02 50 views
18

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?

+0

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} –

Respuesta

34

Se puede utilizar:

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

o incluso mejor:

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

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.

5

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); 
+0

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

Cuestiones relacionadas