MySQL 中的 RAND()函数
MySQL 中的RAND ()函数用于返回0 <= V < 1.0范围内的随机浮点值V。如果我们想获得i <= R < j范围内的随机整数 R,我们必须使用表达式:
FLOOR(i + RAND() * (j − i)) 。
句法 :
RAND(N)
参数:此方法只接受一个参数。
N :如果指定了 N,则返回可重复的随机数序列。如果未指定 N,则返回一个完全随机数。它是可选的,可用作种子值。
返回:它返回一个介于 0 和 1 之间的随机浮点数。
示例-1:
使用 RAND函数获取 0 到 1 之间的随机值。
SELECT RAND() AS Random_Number;
输出 :
Random_Number |
---|
0.6332025068189973 |
示例 2 :
使用带有种子值的 RAND函数获取 0 到 1 之间的随机值。
SELECT RAND(), RAND(5), RAND(5);
输出 :
RAND() | RAND(5) | RAND(5) |
---|---|---|
0.9580191140603452 | 0.40613597483014313 | 0.40613597483014313 |
所以,在这里我们可以看到,如果我们使用相同的种子值来生成随机数,我们将得到相同的随机数作为结果。
示例 3 :
使用 RAND函数获取范围[5, 10 )之间的随机值。在这里,我们将使用表达式: FLOOR(i + RAND() * (j − i))来生成随机数。在这里, i 将是 5 , j 将是 10 。
SELECT FLOOR(5 + RAND()*(10-5)) AS Random_Number;
输出 :
Random_Number |
---|
6 |
示例 4:
使用 RAND函数获取范围[5, 10]之间的随机值。在这里,我们将使用表达式: FLOOR(i + RAND() * (j − i + 1))来生成随机数。这里i是 5, j是 10。
SELECT FLOOR(5 + RAND()*(10 - 5 + 1)) AS Random_Number;
输出 :
Random_Number |
---|
10 |
示例 5:
使用 RAND函数按随机顺序从类别表中返回行。为了演示创建一个名为Student的表。
CREATE TABLE Student(
Student_id INT AUTO_INCREMENT,
Student_name VARCHAR(100) NOT NULL,
Student_Class VARCHAR(20) NOT NULL,
TotalExamGiven INT NOT NULL,
PRIMARY KEY(Student_id )
);
现在向 Student 表插入一些数据 -
INSERT INTO
Student(Student_name, Student_Class, TotalExamGiven)
VALUES
('Sayan', 'IX', 8),
('Nitin', 'X', 5),
('Aniket', 'XI', 6),
('Abdur', 'X', 7),
('Riya', 'IX', 4),
('Jony', 'X', 10),
('Deepak', 'X', 7),
('Ankana', 'XII', 5),
('Shreya', 'X', 8);
要获取有关学生表的所有详细信息,我们将使用 -
SELECT *
FROM Student;
输出 :
Student_id | Student_name | Student_Class | TotalExamGiven |
---|---|---|---|
1 | Sayan | IX | 8 |
2 | Nitin | X | 5 |
3 | Aniket | XI | 6 |
4 | Abdur | X | 7 |
5 | Riya | IX | 4 |
6 | Jony | X | 10 |
7 | Deepak | X | 7 |
8 | Ankana | XII | 5 |
9 | Shreya | X | 8 |
因此,我们可以看到表中的所有行都以正确的顺序给出。要按随机顺序从 Student 表中返回行,我们将使用 -
SELECT *
FROM Student
ORDER BY RAND();
输出 :
Student_id | Student_name | Student_Class | TotalExamGiven |
---|---|---|---|
6 | Jony | X | 10 |
1 | Sayan | IX | 8 |
5 | Riya | IX | 4 |
2 | Nitin | X | 5 |
3 | Aniket | XI | 6 |
8 | Ankana | XII | 5 |
9 | Shreya | X | 8 |
4 | Abdur | X | 7 |
7 | Deepak | X | 7 |