RANDOM 函數 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

RANDOM 函數

RANDOM 函數會產生介於 0.0 (包含) 到 1.0 (不包含) 間的隨機值。

Syntax (語法)

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,並傳回三個以上的 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)