RAND

说明

返回 0 到 1 之间的 FLOAT8 类型的随机数。

语法

rand ::=

参数

int_expression

精确数字数据类型类别的表达式,指定随机种子。

返回值

生成的0到1之间的随机数。

注解

  • 在实际应用中,需要用 SETSEED 设置一下随机种子,避免每次产生的随机数都是一样。
  • 不带参数的RAND函数,在不用SETSEED指定随机种子的情况下,每次产生的随机数不同,如果用SETSEED指定相同的随机种子,则产生相同的随机数。
  • 带参数的RAND函数,随机种子的选择只与参数有关,参数不同则产生的随机数不同,相同参数产生的随机数相同。

示例1: 用 RAND 生成随机数(不带参数)

不带参数的rand函数:

--当不设置随机种子时,rand函数产生的随机数不同
SELECT rand();
       RAND
-------------------
 0.159437736570573
(1 row)

SELECT rand();
       RAND
-------------------
 0.650809112307992
(1 row)

--当设置随机种子后,rand函数产生的随机数由随机种子的值决定
SELECT SETSEED(100);
 SETSEED
---------
       0
(1 row)
--SETSEED设置随机种子时,只对下一次rand有效
SELECT rand();
        RAND
--------------------
 0.0905971695159549
(1 row)

SELECT rand();
       RAND
-------------------
 0.290855555930573

SELECT SETSEED(100);
 SETSEED
---------
       0
(1 row)
SELECT rand();
        RAND
--------------------
 0.0905971695159549
(1 row)

示例2: 用 RAND 生成随机数(带参数)

带参数的rand函数:

--带参数的rand函数,随机结果的产生只与参数有关
SELECT rand(100);
       RAND
-------------------
 0.011139255958739
(1 row)
SELECT rand(100);
       RAND
-------------------
 0.011139255958739
(1 row)

--带参数的rand函数,随机结果的产生与SETSEED函数无关
SELECT SETSEED(200);
SELECT rand(100);
       RAND
-------------------
 0.011139255958739
(1 row)

SELECT rand(200);
        RAND
--------------------
 0.0210882900479141
(1 row)