W3docs

getrandmax()

Aprende sobre la función getrandmax() en PHP, usada para obtener el valor aleatorio máximo que puede generar la función rand().

La función getrandmax() de PHP devuelve el entero más grande que puede producir la función rand() cuando se llama sin argumentos. Conocer este límite superior te permite escalar de forma segura los valores aleatorios a tu propio rango, razón por la cual getrandmax() es más útil junto a rand() que por sí sola.

Sintaxis

getrandmax(): int

getrandmax() no acepta ningún parámetro y devuelve un int. En PHP moderno (7.1 en adelante) siempre devuelve 2147483647 (el valor máximo de un entero con signo de 32 bits, 2^31 - 1), independientemente del sistema operativo o la arquitectura. Antes de PHP 7.1, el valor podía variar entre plataformas, lo que es una de las razones por las que hoy se prefiere la familia más portable mt_rand().

Cómo usar getrandmax()

Al no recibir argumentos, llamar a la función es muy sencillo:

php— editable, runs on the server

Esto imprime 2147483647 en una instalación moderna de PHP.

Escalar rand() a un rango personalizado

El uso práctico principal de getrandmax() es convertir la salida de rand() en una fracción o un rango más pequeño. Dividir rand() entre getrandmax() produce un float entre 0 y 1, que luego puedes multiplicar para ajustarlo a cualquier rango que necesites:

<?php
// A random float between 0 and 1
$fraction = rand() / getrandmax();

// Scale that fraction into the range 0–100
$scaled = $fraction * 100;

echo "Fraction: " . ($fraction >= 0 && $fraction <= 1 ? "in [0, 1]" : "out of range") . "\n";
echo "Scaled value is between 0 and 100: " . ($scaled >= 0 && $scaled <= 100 ? "yes" : "no") . "\n";
?>

Aquí la salida confirma que la fracción se mantiene dentro de [0, 1] y el valor escalado dentro de [0, 100]. Dado que los números exactos son aleatorios, verificar el rango (en lugar de un valor fijo) es la manera fiable de comprobar la lógica.

getrandmax() vs. mt_getrandmax()

En PHP 7.0+, rand() y mt_rand() comparten el mismo generador de números aleatorios subyacente, por lo que getrandmax() y mt_getrandmax() devuelven el mismo valor. Para código nuevo, se recomienda:

  • mt_rand() para números pseudoaleatorios más rápidos y de mayor calidad.
  • random_int() cuando necesites valores criptográficamente seguros (contraseñas, tokens, códigos de seguridad).

Usa rand() y getrandmax() principalmente cuando trabajes con código heredado que ya los utiliza.

Conclusión

La función getrandmax() informa el límite superior de rand(), un valor fijo de 2147483647 en PHP moderno. Su valor real está como denominador al escalar enteros aleatorios a floats o rangos personalizados. Para nuevos proyectos, prefiere la familia mt_rand() o random_int() para valores aleatorios sensibles a la seguridad.

Práctica

Práctica
¿Cuál es el propósito de la función getrandmax() en PHP?
¿Cuál es el propósito de la función getrandmax() en PHP?
Was this page helpful?