カテゴリ:

データ生成関数

NORMAL

指定された meanstddev (標準偏差)を使用して、正規分布の浮動小数点疑似乱数を生成します。

構文

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

引数

mean

出力値の中心となる値を指定する定数。

stddev

1つの標準偏差の幅を指定する定数。

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

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

gen

一様乱数の生のソースとして機能する式で、通常は RANDOM 関数です。詳細については、データ生成関数 使用上の注意 をご参照ください。

戻り値

浮動小数点乱数を返します。繰り返しの呼び出しが多数ある場合、累積結果は正規分布に近似します。

使用上の注意

この関数は、 RANDOM 関数に関連していますが、返される値の範囲とその分布の両方で異なります。

  • RANDOM は、一様分布でランダムな64ビット整数を生成します。ランダムなシーケンスを繰り返すことを可能にするオプションのシードを受け入れます。

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

  • NORMAL は、指定された標準偏差で、指定された平均を中心とするランダムな整数または浮動小数点数を生成します。

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

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