Números

RANDOM

Devuelve un número decimal aleatorio de 0 (incluido) a 1 (excluido).

Sintaxis

RANDOM()
RANDOM(<mín>, <máx>)

Cada llamada da un número nuevo, y cada fila, el suyo. Multiplícalo y quita la parte decimal para obtener un entero aleatorio en el rango que necesites; PostgreSQL 17 y posteriores tienen además la forma directa RANDOM(1, 6). Se usa a menudo para elegir filas al azar o mezclarlas.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Un número aleatorio
SELECT RANDOM() AS random_number;
random_number
0.8767955776954344

El resultado cambia cada vez: pulsa «Ejecutar» varias veces.

Un dado: un entero del 1 al 6
SELECT FLOOR(RANDOM() * 6) + 1 AS dice,
RANDOM(1, 6) AS dice_pg17;
dicedice_pg17
34
Un empleado al azar
SELECT name
FROM employees
ORDER BY RANDOM()
LIMIT 1;
name
Noah

Ten en cuenta

ROUND(RANDOM() * 6) da una distribución desigual: el 0 y el 6 salen la mitad de veces que los demás números. Para un entero, usa FLOOR(RANDOM() * 6) + 1.

ORDER BY RANDOM() recorre y ordena toda la tabla. Con millones de filas es lento; para tablas grandes existe TABLESAMPLE.

RANDOM no sirve para contraseñas, tokens ni nada que deba ser impredecible. Un identificador aleatorio lo da gen_random_uuid().

Funciones relacionadas