返回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函數屬於數學函數,更多資料計算、資料轉換的相關函數請參見數學函數。