宣言
UNIFORM(<min> , <max> , <gen>)
説明
この関数は、一様分布(Uniform Distribution)に従う整数または浮動小数点数を返します。
minとmaxの値はスカラー値でなければならず、行ごとのイテレーションによって変化することはありません。例えば、定数やスカラー関数などです。PLでは、@v1、1+@v3なども可能です。- Oracleモードでは、
minおよびmaxが整数であるかどうかにかかわらず、NUMBERタイプとして扱われ、UNIFORM()関数の出力結果は浮動小数点数になります。整数を生成したい場合は、FLOOR()関数と組み合わせて使用できます。 genは数値生成関数であり、通常はRANDOM()関数を使用して生成されます。渡された値が定数の場合、UNIFORM()関数の戻り値も定数になります。
例
以下の例は、返される結果のタイプが UNIFORM() パラメータのタイプに関連していることを示しています。
obclient> SELECT UNIFORM(0.0, 10, RANDOM()) FROM TABLE(GENERATOR(4)) ORDER BY 1;
+--------------------------+
| UNIFORM(0.0,10,RANDOM()) |
+--------------------------+
| .8657087411722835 |
| 1.0922542185892958 |
| 1.1803956370514672 |
| 5.613282729140028 |
+--------------------------+
4 rows in set
obclient> SELECT UNIFORM(0, 10, RANDOM()) FROM TABLE(GENERATOR(4)) ORDER BY 1;
+------------------------+
| UNIFORM(0,10,RANDOM()) |
+------------------------+
| 2.6761305377880125 |
| 3.0277418674828116 |
| 5.170644071608517 |
| 5.805950943815582 |
+------------------------+
4 rows in set