MySQL RAND() 函数使用指南

MySQL RAND() 函数返回一个 0 (包含) 和 1 (不包含) 之间的随机数。

RAND() 语法

这里是 MySQL RAND() 函数的语法:

RAND()
RAND(seed)

参数

seed
可选的。产生随机数的种子。如果提供了 seedRAND(seed) 函数将产生一个可重复的随机数序列。

返回值

MySQL RAND() 函数返回一个 0 (包含) 和 1 (不包含) 之间的随机数。

如果您提供了参数 seed,MySQL RAND(seed) 函数将产生一个可重复的随机数序列。

RAND() 返回的是 0 和 1 之间的随机小数,如果你想返回其他区间(比如 mn)的随机数,请使用以下公式:

  • mn 之间的随机数: RAND() * (n - m) + m
  • mn 之间的随机整数: FLOOR(RAND() * (n - m + 1) + m)

RAND() 示例

返回 0 和 1 之间的随机数

SELECT
    RAND(),
    RAND(),
    RAND(),
    RAND()\G
*************************** 1. row ***************************
RAND(): 0.45966783674402895
RAND(): 0.011888444434747514
RAND(): 0.6804387426752958
RAND(): 0.3665284108058814

返回 10 和 20 之间的随机数

SELECT
    RAND() * (20 - 10) + 10,
    RAND() * (20 - 10) + 10,
    RAND() * (20 - 10) + 10,
    RAND() * (20 - 10) + 10\G
*************************** 1. row ***************************
RAND() * (20 - 10) + 10: 12.783272138594903
RAND() * (20 - 10) + 10: 17.496861179821995
RAND() * (20 - 10) + 10: 19.134489790661718
RAND() * (20 - 10) + 10: 13.181865721179047

返回 10 和 20 之间的随机整数

SELECT
    FLOOR(RAND() * (20 - 10 + 1) + 10),
    FLOOR(RAND() * (20 - 10 + 1) + 10),
    FLOOR(RAND() * (20 - 10 + 1) + 10),
    FLOOR(RAND() * (20 - 10 + 1) + 10)\G
*************************** 1. row ***************************
FLOOR(RAND() * (20 - 10) + 10): 20
FLOOR(RAND() * (20 - 10) + 10): 13
FLOOR(RAND() * (20 - 10) + 10): 15
FLOOR(RAND() * (20 - 10) + 10): 16