# SQL Server: RAND Function

This SQL Server tutorial explains how to use the RAND function in SQL Server (Transact-SQL) with syntax and examples.

## Description

In SQL Server (Transact-SQL), the RAND function can be used to return a random number or a random number within a range.

## Syntax

The syntax for the RAND function in SQL Server (Transact-SQL) is:

`RAND( [seed] )`

### Parameters or Arguments

seed
Optional. If specified, it will produce a repeatable sequence of random numbers each time that seed value is provided.

## Note

• The RAND function will return a value between 0 and 1 (not inclusive), so value > 0 and value < 1.
• The RAND function will return a completely random number if no seed is provided.
• The RAND function will return a repeatable sequence of random numbers each time a particular seed value is used.

## Random Decimal Range

To create a random decimal number between two values (range), you can use the following formula:

`SELECT RAND()*(b-a)+a;`

Where a is the smallest number and b is the largest number that you want to generate a random number for.

`SELECT RAND()*(25-10)+10;`

The formula above would generate a random decimal number between 10 and 25, not inclusive.

TIP: This formula would generate a random decimal number that is > 10 and < 25 but it would never return exactly 10 or 25.

## Random Integer Range

To create a random integer number between two values (range), you can use the following formula:

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

Where a is the smallest number and b is the largest number that you want to generate a random number for.

`SELECT FLOOR(RAND()*(25-10+1))+10;`

The formula above would generate a random integer number between 10 and 25, inclusive.

TIP: This formula would generate a random integer number that is >= 10 and <= 25.

## Applies To

The RAND function can be used in the following versions of SQL Server (Transact-SQL):

• SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

## Example of Random Number

Let’s explore how to use the RAND function in SQL Server (Transact-SQL) to generate a random number between 0 and 1, not inclusive.

For example:

```SELECT RAND();
Result:  0.143811355073783     (no seed value, so your answer will vary)

SELECT RAND(9);
Result:  0.713741056982989     (with seed value of 9)

SELECT RAND(-5);
Result:  0.713666525097956     (with seed value of -5)```

## Example of Random Decimal Range

Let’s explore how to use the RAND function in SQL Server (Transact-SQL) to generate a random decimal number between two numbers (ie: range).

For example, the following would generate a random decimal value between 1 and 10, not inclusive (random number would be greater than 1 and less than 10):

```SELECT RAND()*(10-1)+1;
Result:  5.09104269717813      (no seed value, so your answer will vary)

SELECT RAND(9)*(10-1)+1;
Result:  7.4236695128469       (with seed value of 9)

SELECT RAND(-5)*(10-1)+1;
Result:  7.42299872588161      (with seed value of -5)```

## Example of Random Integer Range

Let’s explore how to use the RAND function in SQL Server (Transact-SQL) to generate a random integer number between two numbers (ie: range).

For example, the following would generate a random integer value between 10 and 20, inclusive:

```SELECT FLOOR(RAND()*(20-10+1))+10;
Result:  19                   (no seed value, so your answer will vary)

SELECT FLOOR(RAND(9)*(20-10+1))+10;
Result:  17                   (with seed value of 9)

SELECT FLOOR(RAND(123456)*(20-10+1))+10;
Result:  10                   (with seed value of 123456)```