类别:

数据生成函数

NORMAL

生成一个正态分布的伪随机浮点数,其具有指定的 meanstddev (标准差)。

语法

NORMAL( <mean> , <stddev> , <gen> )
Copy

实参

mean

用于指定在输出值中居中的值。

stddev

用于指定标准差宽度的常量。

例如,如果指定平均值为 0.0,标准差为 1.0,则多次调用中大约有 68.2% 的返回值介于 -1.0 和 +1.0 之间(即,位于平均值的一个标准差内)。

同样,如果您选择平均值 5.0 和标准差 2,则大约 68.2% 的值介于 3.0 和 7.0 之间。

gen

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

返回

返回随机浮点数。大量重复调用的累积结果近似于正态分布。

使用说明

此函数与 RANDOM 相关,但在返回值的范围及其分布方面,两者均不同。

  • RANDOM 在均匀分布中生成随机的 64 位整数。它接受允许重复随机序列的可选种子。

    当多次调用 RANDOM 时,结果或多或少均匀分布在可能值的范围内。例如,值介于 1000 和 2000 之间的结果数与介于 2000 和 3000 之间的值数相似。

  • NORMAL 生成以指定平均值为中心的随机整数或浮点数,并具有指定的标准差。

    当多次调用 NORMAL 时,结果的分布可能近似于“正态”曲线(“钟形曲线”)。曲线的中心及其“宽度”受 meanstddev 参数的影响。相较于远离平均值的值,接近指定平均值的值更有可能出现。

示例

此示例显示平均值为 0 且标准差为 1 的典型用法:

SELECT normal(0, 1, random()) FROM table(generator(rowCount => 5));

+------------------------+
| NORMAL(0, 1, RANDOM()) |
|------------------------|
|           0.227384164  |
|           0.9945290748 |
|          -0.2045078571 |
|          -1.594607893  |
|          -0.8213296842 |
+------------------------+
Copy

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

SELECT normal(0, 1, 1234) FROM table(generator(rowCount => 5));

+--------------------+
| NORMAL(0, 1, 1234) |
|--------------------|
|      -0.6604156716 |
|      -0.6604156716 |
|      -0.6604156716 |
|      -0.6604156716 |
|      -0.6604156716 |
+--------------------+
Copy
语言: 中文