PostgreSQL setseed() 函数使用指南
PostgreSQL setseed()
函数为后续调用的 random()
函数设置种子,以让 random()
函数产生一个可重复的随机序列。
setseed()
语法
这里是 PostgreSQL setseed()
函数的语法:
setseed(seed) -> double precision
参数
seed
- 必需的。 后续调用的
random()
函数的种子。它必须介于 -1 和 1 之间(包括 -1.0 和 1.0)。
返回值
PostgreSQL setseed()
没有返回值。
setseed()
示例
让我们先通过 random()
函数产生几个随机数。
SELECT
random(),
random(),
random();
-[ RECORD 1 ]---------------
random | 0.39696090303700515
random | 0.8836384228449994
random | 0.4060772195260256
再运行一次:
SELECT
random(),
random(),
random();
-[ RECORD 1 ]----------------
random | 0.2312518157992649
random | 0.010247106452005994
random | 0.6146019109976812
我们发现,random()
函数每次产生的数字都是随机的,不可预测的。
让我们使用 setseed()
设置种子后再生成随机数,如下:
SELECT
setseed(0.1),
random(),
random(),
random();
-[ RECORD 1 ]---------------
setseed |
random | 0.8499283349327946
random | 0.6662111687168348
random | 0.6272665186165547
然后,让我们在运行一遍上面的语句:
SELECT
setseed(0.1),
random(),
random(),
random();
-[ RECORD 1 ]---------------
setseed |
random | 0.8499283349327946
random | 0.6662111687168348
random | 0.6272665186165547
现在,我们发现两次运行的结果是相同的。这就是 setseed()
函数为同一语句中的后续的 random()
函数设置了相同的种子,导致 random()
函数产生了一个可重复的随机序列。