カテゴリ:

データ生成関数

NORMAL

指定された mean および stddev で正規分布の浮動小数点数を返します。

この関数は、類似する RANDOM 関数に関連しますが、異なります。

  • RAND が多数回呼び出された場合、結果は可能な値の範囲にほぼ均等に分散されます。たとえば、1000~2000の値を持つ結果の数は、2000~3000の値の数に似ています。

  • NORMAL が何度も呼び出されると、結果の分布は「通常の」曲線(「ベル形の曲線」と呼ばれることもある)に近似する可能性があります。曲線の中心と曲線の「幅」は 、 mean および stddev パラメーターの影響を受けます。指定された平均に近い値は、平均から遠い値よりも発生する可能性が高くなります。

構文

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

引数

mean

これは、出力値を中心にする値です。

stddev

これは、1つの標準偏差の幅を指定します。たとえば、0.0の平均と1.0の標準偏差を選択した場合、この関数を何度も呼び出すと、返される値の約68.2%が-1.0~+1.0の間になります(平均の1標準偏差以内)。

同様に、平均値5.0と標準偏差2を選択した場合、値の約68.2%は3.0~7.0の間になります。

gen

これは、関数のジェネレーター式を指定します。詳細については、 使用上の注意 をご参照ください。

使用上の注意

呼び出しの数が増えると、 gen 関数が均等に分布した値を生成すると仮定し、累積結果は真の「正規」分布に近づく傾向があります。

これは、平均が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 |
+------------------------+

これは、 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 |
+--------------------+