DOUBLE型の乱数を返します。 値の範囲は0から1です。
構文
double rand(bigint <seed>)
パラメータ
seed: オプション。 BIGINT型の値。 このパラメーターは、乱数を生成する際の開始点を決定するランダムシードを指定します。
seedを使用して、乱数シーケンスを決定できます。 seedが決定された後、この関数の戻り値は固定されます。 実行環境が同じで、シード値が変更されない場合、戻り値は同じになります。 異なる結果を返す必要がある場合は、シード値を変更する必要があります。
SQL文の前に次の設定を追加できます。 パラメーターのデフォルト値はfalse
です。
set odps.sql.executionengine.enable.rand.time.seed=true|false;
odps.sql.exe cutionengine.enable.rand.time.seedパラメーターを
false
に設定すると、RAND関数はインスタンスIDをシードとして使用して乱数を生成します。 これにより、RAND関数のべき等性が保証される。odps.sql.exe cutionengine.enable.rand.time.seedパラメーターを
true
に設定すると、RAND関数は現在のシステム時刻をシードとして使用して乱数を生成します。 ただし、RAND関数はべき等ではなく、シャッフルキーとして使用することはできません。 この場合、RAND関数を実行するたびに戻り値が異なります。
戻り値
DOUBLE型の値が返されます。
例
-- The return value is 0.7308781907032909.
select rand(1);
-- If the odps.sql.executionengine.enable.rand.time.seed parameter is set to false, the return value remains unchanged.
set odps.sql.executionengine.enable.rand.time.seed=false;
select rand();
-- The following result is returned:
+------------+
| _c0 |
+------------+
| 4.7147460303803655E-4 |
+------------+
select rand();
-- The following result is returned:
+------------+
| _c0 |
+------------+
| 4.7147460303803655E-4 |
+------------+
-- If the odps.sql.executionengine.enable.rand.time.seed parameter is set to true, the return value differs each time.
set odps.sql.executionengine.enable.rand.time.seed=true;
select rand();
-- The following result is returned:
+------------+
| _c0 |
+------------+
| 0.4111229695431529 |
+------------+
select rand();
-- The following result is returned:
+------------+
| _c0 |
+------------+
| 0.8212525247695169 |
+------------+
パラメーターodps.sql.exe cutionengine.enable.rand.time.seed
は、RAND関数でシードパラメーターが指定されていない場合にのみ有効になります。 シードパラメーターがRAND関数で指定されている場合、odps.sql.exe cutionengine.enable.rand.time.seedパラメーターの値は自動的にfalse
に設定されます。
関連関数
RANDは数学的関数である。 データコンピューティングと変換に関連する関数の詳細については、数学関数.