Amazon Redshift
数据库开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

RANDOM 函数

RANDOM 函数生成介于 0.0(含)和 1.0(不含)之间的随机值。

语法

RANDOM()

返回类型

RANDOM 返回 DOUBLE PRECISION 数。

使用说明

在使用 SET 命令设置种子值后调用 RANDOM 以使 RANDOM 生成可预测序列中的数。

示例

  1. 计算介于 0 和 99 之间的随机值。如果随机数为 0 - 1,此查询将生成 0 - 100 的随机值:

    select cast (random() * 100 as int); int4 ------ 24 (1 row)
  2. 检索 10 个项目的统一随机样本:

    select * from sales order by random() limit 10;

    现在检索 10 个项目的随机样本,但选择与其价格成比例的项目。例如,价格是另一个两倍的项目在查询结果中出现的可能性是其两倍:

    select * from sales order by log(1 - random()) / pricepaid limit 10;
  3. 此示例使用 SET 命令设置一个 SEED 值,以使 RANDOM 生成可预测的数字序列。

    首先,返回三个 RANDOM 整数,而不先设置 SEED 值:

    select cast (random() * 100 as int); int4 ------ 6 (1 row) select cast (random() * 100 as int); int4 ------ 68 (1 row) select cast (random() * 100 as int); int4 ------ 56 (1 row)

    现在,将 SEED 值设置为 .25,并返回 3 个以上的 RANDOM 数字:

    set seed to .25; select cast (random() * 100 as int); int4 ------ 21 (1 row) select cast (random() * 100 as int); int4 ------ 79 (1 row) select cast (random() * 100 as int); int4 ------ 12 (1 row)

    最后,将 SEED 值重置为 .25,并验证 RANDOM 是否返回与前三个调用相同的结果:

    set seed to .25; select cast (random() * 100 as int); int4 ------ 21 (1 row) select cast (random() * 100 as int); int4 ------ 79 (1 row) select cast (random() * 100 as int); int4 ------ 12 (1 row)