UNIFORM
声明
UNIFORM(<min> , <max> , <gen>)
说明
该函数返回一个符合均匀分布(Uniform Distribution)的整数或浮点数。
min,max的取值必须是标量值,不随行迭代而变。例如,常量、标量函数等。PL 里还可以是@v1、1+@v3等。- MySQL 模式下,当
min或max均为整数时,UNIFORM()函数的输出结果为整数;否则,UNIFORM()函数的输出结果为浮点数。 gen是一个数值生成函数,通常使用RANDOM()函数生成。如果传入值是一个常量,则UNIFORM()函数返回值也为一个定值。
示例
如下示例为均匀生成 1~10 之间的整数。
SELECT v, COUNT(*) FROM (SELECT UNIFORM(1, 10, RANDOM()) v FROM TABLE(GENERATOR(1000000))) x GROUP BY v ORDER BY v;
+------+----------+
| v | count(*) |
+------+----------+
| 1 | 100738 |
| 2 | 100119 |
| 3 | 100223 |
| 4 | 99537 |
| 5 | 100125 |
| 6 | 100001 |
| 7 | 100275 |
| 8 | 99235 |
| 9 | 99837 |
| 10 | 99910 |
+------+----------+
10 rows in set (0.002 sec)
如下示例说明返回的结果类型和参数的类型有关。
SELECT UNIFORM(0.0, 10, RANDOM()) FROM TABLE(GENERATOR(4)) ORDER BY 1;
+----------------------------+
| UNIFORM(0.0, 10, RANDOM()) |
+----------------------------+
| 2.3520877625884653 |
| 4.155845987385725 |
| 8.323930497420852 |
| 9.844002748532109 |
+----------------------------+
4 rows in set (0.001 sec)
SELECT UNIFORM(0, 10, RANDOM()) FROM TABLE(GENERATOR(4)) ORDER BY 1;
+--------------------------+
| UNIFORM(0, 10, RANDOM()) |
+--------------------------+
| 0 |
| 4 |
| 8 |
| 9 |
+--------------------------+
4 rows in set (0.001 sec)