MySQL - RAND() Function



The MySQL RAND() function of MySQL usually returns a random floating-point value with in the range 0 to 1.0. But, to obtain a random integer R in the range i to j, use the following expression:

FLOOR(i + RAND() * (j − i))

For example, to obtain a random integer in the range the range 7 to 12, use the following statement:

SELECT FLOOR(7 + (RAND() * 5));

The RAND() function also accepts an optional argument [N], used as a seed value.

Syntax

Following is the syntax of MySQL RAND() function −

RAND([N])

Parameters

This function takes an optional parameter. It can be an integer or an expression that is used as the "seed" value for the random number generator. If you use the same seed, you will get the same sequence of random numbers.

  • With a constant initializer argument, the seed is initialized once when the statement is prepared, prior to execution.

  • With a nonconstant initializer argument (such as a column name), the seed is initialized with the value for each invocation of RAND().

Return Value

This function returns a random floating-point value between 0 and 1.

Example

In the following example, we are using the MySQL RAND() function to generate a random floating-point number between 0 and 1 −

SELECT RAND() As Result;

Output

The output for the query above is produced as given below −

Result
0.6566204965641913

Example

We can also pass expressions as parameters to this function as shown below −

SELECT RAND(225+(RAND()*9)) As Result;

Output

This will produce the following result −

Result
0.6966031060522451

Example

Following is another example of this function −

SELECT RAND( ), RAND( ), RAND( );

Output

This will produce the following result −

RAND( ) RAND( ) RAND( )
0.7602040020378343 0.38593764545948955 0.6490762519175897

Example

To obtain a random integer in a range 10 to 20, use the following query:

SELECT FLOOR(10 + (RAND() * 10)) As Result;

Output

The output is produced as follows −

Result
18

Example

We can use ORDER BY RAND() to randomize a set of rows or values. To do so, let us create a table named CUSTOMERS using the following query −

CREATE TABLE CUSTOMERS (
   ID INT AUTO_INCREMENT,
   NAME VARCHAR(20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

The below query adds 7 records into the above created table −

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

To verify whether the records are inserted, execute the following query −

Select * From CUSTOMERS;

Following is the CUSTOMERS table −

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

Now, we are going to use RAND() function with ORDER BY to randomize the order of the table −

SELECT * FROM CUSTOMERS ORDER BY RAND();

On executing the given query, the output is displayed as follows −

ID NAME AGE ADDRESS SALARY
3 Kaushik 23 Kota 2000.00
1 Ramesh 32 Ahmedabad 2000.00
5 Hardik 27 Bhopal 8500.00
2 Khilan 25 Delhi 1500.00
4 Chaitali 25 Mumbai 6500.00
7 Muffy 24 Indore 10000.00
6 Komal 22 Hyderabad 4500.00
Advertisements