📜  MySQL 中的 RAND()函数

📅  最后修改于: 2022-05-13 01:55:29.277000             🧑  作者: Mango

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.95801911406034520.406135974830143130.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_idStudent_nameStudent_ClassTotalExamGiven
1SayanIX8
2NitinX5
3AniketXI6
4AbdurX7
5RiyaIX4
6JonyX10
7DeepakX7
8AnkanaXII5
9ShreyaX8

因此,我们可以看到表中的所有行都以正确的顺序给出。要按随机顺序从 Student 表中返回行,我们将使用 -

SELECT * 
FROM Student 
ORDER BY RAND();

输出 :

Student_idStudent_nameStudent_ClassTotalExamGiven
6JonyX10
1SayanIX8
5RiyaIX4
2NitinX5
3AniketXI6
8AnkanaXII5
9ShreyaX8
4AbdurX7
7DeepakX7