Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Base de datos de Azure SQL en Microsoft Fabric
Devuelve un valor flotante pseudoaleatorio de 0 a través 1de , exclusivo.
Convenciones de sintaxis de Transact-SQL
Sintaxis
RAND ( [ seed ] )
Nota:
El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.
Argumentos
seed
Una expresión entera (tinyint, smallint o int) que da el valor semilla. Si no se especifica inicialización, el motor de base de datos de SQL Server asigna un valor de inicialización de forma aleatoria. Para un valor de inicialización especificado, el resultado devuelto es siempre el mismo.
Tipos de valores devueltos
float
Comentarios
Las llamadas repetitivas de RAND() con el mismo valor de inicialización devuelven los mismos resultados.
Para una conexión, si se llama a
RAND()con el valor de inicialización especificado, todas las llamadas posteriores deRAND()generan resultados basados en la llamada aRAND()inicializada. Por ejemplo, la siguiente consulta siempre devuelve la misma secuencia de números.SELECT RAND(100), RAND(), RAND();Cuando se usa la función
RAND()en una consultaUPDATEoINSERT, todas las filas afectadas obtienen el mismo valor.
Ejemplos
A. Crea cuatro números aleatorios diferentes
En el siguiente ejemplo se producen cuatro números aleatorios diferentes, generados con la función RAND().
DECLARE @counter AS SMALLINT;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() AS RandomNumber;
SET @counter = @counter + 1;
END
GO
B. Genera aleatoriamente 0 o 1
El siguiente ejemplo utiliza la ROUND() función para devolver aleatoriamente o bien 0 o 1.
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
Nota:
En este ejemplo, la FLOOR() función siempre devuelve 0, mientras que la CEILING() función siempre devuelve 1.
C. Generar números aleatorios mayores que 1
Puedes escalar el rango del flotador aleatorio multiplicando la RAND() función por un valor entero. El siguiente ejemplo devuelve un flotador aleatorio entre 0 y 10.
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT @Constant * RAND() AS RandomNumber;
GO
D. Generar enteros aleatorios
Puedes generar un valor entero aleatorio escalando la RAND() función y combinándola con las ROUND()funciones , FLOOR(), o CEILING() . El siguiente ejemplo devuelve un entero aleatorio entre 0 y 10, inclusive.
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT ROUND(@Constant * RAND(), 0) AS FirstRandomInteger,
FLOOR(@Constant * RAND()) AS SecondRandomInteger,
CEILING(@Constant * RAND()) AS ThirdRandomInteger;
GO
E. Insertar valores aleatorios en una tabla
El siguiente ejemplo llena una variable de tabla con valores aleatorios int, float y bit .
DECLARE @RandomTable TABLE (
RandomIntegers INT,
RandomFloats FLOAT,
RandomBits BIT);
DECLARE @RowCount AS INT;
DECLARE @Counter AS INT;
SET @RowCount = 10;
SET @Counter = 1;
WHILE @Counter <= @RowCount
BEGIN
INSERT INTO @RandomTable
VALUES (ROUND(10 * RAND(), 0), RAND(), CAST (ROUND(RAND(), 0) AS BIT));
SET @Counter = @Counter + 1;
END
SELECT *
FROM @RandomTable;
GO