类别:

数据生成函数

UNIFORM

生成一个位于 [min, max] 范围(含两者)内的均匀分布的伪随机数。

语法

UNIFORM( <min> , <max> , <gen> )
Copy

实参

min

一个常量,指定生成的数字的最小值(含)。

max

一个常量,指定生成的数字的最大值(含)。

gen

用作统一随机数(通常为 RANDOM 函数)的原始源的表达式。有关更多信息,请参阅数据生成函数 使用说明

返回

如果 min 或/和 max 是浮点数,则 UNIFORM 返回浮点数。如果 minmax 都是整数,则 UNIFORM 返回一个整型。

使用说明

此函数与 RANDOM 函数相关,但却与其不同。这两个函数都生成均匀分布的数,但返回值的范围存在差异。

  • RANDOM 生成伪随机 64 位整数。它接受允许重复序列的可选种子。

  • UNIFORM 生成指定范围内的随机整数或浮点数。

示例

以下示例演示了如何使用 UNIFORM 函数。以下输出中显示的值可能与您自行运行这些示例时返回的值不同。

此示例生成 5 个 1 到 10(含)范围内的随机整数:

SELECT UNIFORM(1, 10, RANDOM()) FROM TABLE(GENERATOR(ROWCOUNT => 5));
Copy
+--------------------------+
| UNIFORM(1, 10, RANDOM()) |
|--------------------------|
|                        6 |
|                        1 |
|                        8 |
|                        5 |
|                        6 |
+--------------------------+

此示例生成 5 个 0 到 1(含)范围内的浮点数:

SELECT UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) FROM TABLE(GENERATOR(ROWCOUNT => 5));
Copy
+---------------------------------------+
| UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) |
|---------------------------------------|
|                         0.1180758313  |
|                         0.4945805484  |
|                         0.7113092833  |
|                         0.06170806767 |
|                         0.01635235156 |
+---------------------------------------+

此示例显示,如果 gen 实参是常量,则输出是常量:

SELECT UNIFORM(1, 10, 1234) FROM TABLE(GENERATOR(ROWCOUNT => 5));
Copy
+----------------------+
| UNIFORM(1, 10, 1234) |
|----------------------|
|                    7 |
|                    7 |
|                    7 |
|                    7 |
|                    7 |
+----------------------+
语言: 中文