mysql.h


RAND

RAND()
RAND(N)

Devuelve un valor aleatorio en punto flotante, en el rango 0 a 1.0. Si se especifica un argumento entero N, se usa como valor de semilla (produciendo una secuencia repetible):

mysql> SELECT RAND();
+------------------+
| RAND()           |
+------------------+
| 0.40765042361585 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND(20);
+------------------+
| RAND(20)         |
+------------------+
| 0.15888261251047 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND(20);
+------------------+
| RAND(20)         |
+------------------+
| 0.15888261251047 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND();
+------------------+
| RAND()           |
+------------------+
| 0.96999072001315 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND();
+------------------+
| RAND()           |
+------------------+
| 0.62700235995185 |
+------------------+
1 row in set (0.00 sec)

No es posible usar una columna con valores RAND() en una cláusula ORDER BY, porque ORDER BY puede evaluar la columna varias veces. Desde la versión 3.23 se puede hacer: SELECT * FROM table_name ORDER BY RAND(). Lo siguiente es corriente para obtener una muestra aleatoria de un conjunto SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000. Hay que tener en cuenta que RAND() en una cláusula WHERE será evaluada cada vez que el WHERE sea ejecutado. RAND() no está diseñado para ser un generador aleatorio perfecto, pero sin embargo es un modo rápido de generar números aleatorios que pueden ser portados entre plataformas por la misma versión de MySQL.