全部產品
Search
文件中心

MaxCompute:RAND

更新時間:Jun 19, 2024

返回DOUBLE類型的隨機數,傳回值區間是0~1。

命令格式

double rand(bigint <seed>)

參數說明

seed:可選。BIGINT類型。隨機數種子,決定隨機數序列的起始值。

說明

您可以通過seed確定隨機數序列,seed確定後,即可固定該函數的返回結果。執行環境是一樣的情況下,seed取值不變的話,傳回值是一樣的,如果需要返回不一樣的結果,需要修改seed取值。

可在SQL前新增以下參數,預設值為false

set odps.sql.executionengine.enable.rand.time.seed=true|false;
  • 當參數值為false時,RAND函數使用當前InstanceId作為隨機數初始化seed,可以保證函數等冪。

  • 當參數值為true時,RAND函數使用當前系統時間作為隨機數初始化的seed, 但RAND函數不再等冪,不能作為Shuffle Key使用,會導致重跑的結果不相同。

傳回值說明

返回DOUBLE類型。

使用樣本

--返回0.7308781907032909。
select rand(1);

--當參數為false時,保持原有行為
set odps.sql.executionengine.enable.rand.time.seed=false;
select rand();
--返回
+------------+
| _c0        |
+------------+
| 4.7147460303803655E-4 |
+------------+

select rand();
--返回
+------------+
| _c0        |
+------------+
| 4.7147460303803655E-4 |
+------------+

--當參數為true時,每次傳回值都不一樣
set odps.sql.executionengine.enable.rand.time.seed=true;
select rand();
--返回
+------------+
| _c0        |
+------------+
| 0.4111229695431529 |
+------------+
select rand();
--返回
+------------+
| _c0        |
+------------+
| 0.8212525247695169 |
+------------+
說明

參數odps.sql.executionengine.enable.rand.time.seed=true只對不輸入參數生效,如果加入了參數,預設參數值false

相關函數

RAND函數屬於數學函數,更多資料計算、資料轉換的相關函數請參見數學函數