SQL Server RAND(): Get Random Numbers

In SQL Server, the RAND() function returns a random number between 0 and 1, excluding 0 & 1. It returns the pseudo-random float value.

RAND(seed)

Parameters

seed: Optional. An integer value to generate a random number. If it is not provided, SQL Server assigns different seed value on each execution.

Note: For a specified seed value, the return value is always the same.

Return Value

Returns a float between 0 through 1.

Example 1:

In this simple example, RAND() is called without a seed value. Here the RAND() function returns a different value every time it is executed because RAND() uses a random seed value each time.

Example: RAND()
SELECT RAND() AS WithoutSeed;

The above output may be different in your local SQL Server. It returns the different random number on each execution because it internally passes different seed value each time.

Example 2:

In the following example, the RAND() uses a seed value and the return value is always the same for a given seed.

Example: RAND()
SELECT RAND(7) AS WithPosSeed;

Example 3:

In this example, the RAND() uses a negative seed value and the return value is always the same for a given seed similar to a positive seed.

Example: RAND()
SELECT RAND(-9) AS WithNegSeed;

Generate Random Number Between Specific Numbers

use the following formula to generate a random integer value between the two numbers:

SELECT FLOOR(RAND() * (b-a+1)) + a

In the above formula, a is the smallest number and b is the largest number in the range in which you want to generate a random number (inclusive of a & b).

For example, the following generates a random integer between 10 and 20. Since the FLOOR() function is used with RAND(), the result would be integer.

Example: Random Number in Range
SELECT FLOOR(RAND() * (20-10 + 1)) + 10 AS RandInt;