Categories:

Data Generation Functions

# NORMAL¶

Returns a normal-distributed floating point number, with specified `mean` and `stddev` (standard deviation).

This function is related to, but different from, the similar RANDOM function.

• When `RAND` is called a large number of times, the results are more or less evenly distributed over the range of possible values. E.g. the number of results with values between 1000 and 2000 is similar to the number of values between 2000 and 3000.

• When `NORMAL` is called a large number of times, the distribution of the results is likely to approximate a “normal” curve (sometimes called a “bell-shaped curve”). The center of the curve and the “breadth” of the curve are influenced by the `mean` and `stddev` parameters. Values closer to the specified mean are more likely to occur than values far from the mean.

## Syntax¶

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

## Arguments¶

`mean`

This is the value that you would like the output values centered around.

`stddev`

This specifies the width of one standard deviation. For example, if you choose a mean of 0.0 and a standard deviation of 1.0, then if you call this function many times, approximately 68.2% of returned values will be between -1.0 and +1.0 (i.e. within one standard deviation of the mean).

Similarly, if you choose a mean of 5.0 and a standard deviation of 2, then approximately 68.2% of values will be between 3.0 and 7.0.

`gen`

This specifies the generator expression for the function. For more information, see Usage Notes.

## Usage Notes¶

As the number of calls increases, the accumulated results tend to be closer to a true “normal” distribution, assuming that the `gen` function generates evenly-distributed values.

## Examples¶

This shows typical usage with a mean of 0 and a standard deviation of 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 |
+------------------------+
```

This shows that if the `gen` parameter is a constant, then the output is a constant:

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

+--------------------+
| NORMAL(0, 1, 1234) |
|--------------------|
|      -0.6604156716 |
|      -0.6604156716 |
|      -0.6604156716 |
|      -0.6604156716 |
|      -0.6604156716 |
+--------------------+
``` 