すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:RAND

最終更新日:Jan 17, 2025

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は数学的関数である。 データコンピューティングと変換に関連する関数の詳細については、数学関数.