PostgreSQL random() 函数使用指南

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

random() 语法

这里是 PostgreSQL random() 函数的语法:

random()

参数

PostgreSQL random() 函数没有任何参数。

返回值

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

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

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

如果您想获取一个稳定的随机序列,请结合 setseed() 函数一起使用 random() 函数。

random() 示例

返回 0 和 1 之间的随机数

本示例展示了如何使用 random() 函数获取 0 和 1 之间的随机数。

SELECT
    random(),
    random(),
    random(),
    random();
-[ RECORD 1 ]---------------
random | 0.3029171607224228
random | 0.42633738304023794
random | 0.584824959131069
random | 0.7533572011921841

返回 10 和 20 之间的随机数

本示例展示了如何使用 random() 函数获取 10 和 20 之间的随机数。

SELECT
    random() * (20 - 10) + 10 AS "10 <= x < 20",
    random() * (20 - 10) + 10 AS "10 <= x < 20",
    random() * (20 - 10) + 10 AS "10 <= x < 20",
    random() * (20 - 10) + 10 AS "10 <= x < 20";
-[ RECORD 1 ]+-------------------
10 <= x < 20 | 19.504483402831525
10 <= x < 20 | 13.118109640092719
10 <= x < 20 | 17.609356732100565
10 <= x < 20 | 10.092857779143252

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

本示例展示了如何使用 random() 函数和 floor() 函数获取 10 和 20 之间的随机整数。

SELECT
    floor(random() * (20 - 10 + 1) + 10) AS "10 <= x < 20",
    floor(random() * (20 - 10 + 1) + 10) AS "10 <= x < 20",
    floor(random() * (20 - 10 + 1) + 10) AS "10 <= x < 20",
    floor(random() * (20 - 10 + 1) + 10) AS "10 <= x < 20";
-[ RECORD 1 ]+---
10 <= x < 20 | 15
10 <= x < 20 | 17
10 <= x < 20 | 12
10 <= x < 20 | 14