2020-04-03 13:23:32 +00:00
---
2022-08-28 14:53:34 +00:00
slug: /en/sql-reference/functions/random-functions
2023-04-19 17:05:55 +00:00
sidebar_position: 145
sidebar_label: Random Numbers
2020-04-03 13:23:32 +00:00
---
2023-04-19 17:05:55 +00:00
# Functions for Generating Random Numbers
2017-12-28 15:13:23 +00:00
2023-04-19 18:03:01 +00:00
All functions in this section accept zero or one arguments. The only use of the argument (if provided) is to prevent prevent [common subexpression
elimination](../../sql-reference/functions/index.md#common-subexpression-elimination) such that two different execution of the same random
function in a query return different random values.
2017-04-03 19:49:50 +00:00
2023-04-19 18:03:01 +00:00
Related content
- Blog: [Generating random data in ClickHouse ](https://clickhouse.com/blog/generating-random-test-distribution-data-for-clickhouse )
:::note
The random numbers are generated by non-cryptographic algorithms.
2022-04-09 13:29:05 +00:00
:::
2017-04-03 19:49:50 +00:00
2022-06-02 10:55:18 +00:00
## rand, rand32
2017-12-28 15:13:23 +00:00
2023-04-19 18:03:01 +00:00
Returns a random UInt32 number, evenly distributed accross the range of all possible UInt32 numbers.
2020-06-19 10:12:59 +00:00
2017-04-26 19:16:38 +00:00
Uses a linear congruential generator.
2017-04-03 19:49:50 +00:00
2022-06-02 10:55:18 +00:00
## rand64
2017-12-28 15:13:23 +00:00
2023-04-19 18:03:01 +00:00
Returns a random UInt64 number, evenly distributed accross the range of all possible UInt64 numbers.
2020-06-19 10:12:59 +00:00
2017-04-26 19:16:38 +00:00
Uses a linear congruential generator.
2017-12-28 15:13:23 +00:00
2022-11-17 10:17:27 +00:00
## randCanonical
2022-11-14 23:27:19 +00:00
2023-04-19 18:03:01 +00:00
Returns a Float64 value, evenly distributed in [0, 1).
2022-11-14 23:27:19 +00:00
2022-06-02 10:55:18 +00:00
## randConstant
2019-01-30 10:39:46 +00:00
2023-04-19 18:03:01 +00:00
Like `rand` but produces a constant column with a random value.
2020-05-12 16:37:21 +00:00
**Example**
``` sql
SELECT rand(), rand(1), rand(number), randConstant(), randConstant(1), randConstant(number)
FROM numbers(3)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2020-05-12 16:37:21 +00:00
┌─────rand()─┬────rand(1)─┬─rand(number)─┬─randConstant()─┬─randConstant(1)─┬─randConstant(number)─┐
│ 3047369878 │ 4132449925 │ 4044508545 │ 2740811946 │ 4229401477 │ 1924032898 │
│ 2938880146 │ 1267722397 │ 4154983056 │ 2740811946 │ 4229401477 │ 1924032898 │
│ 956619638 │ 4238287282 │ 1104342490 │ 2740811946 │ 4229401477 │ 1924032898 │
└────────────┴────────────┴──────────────┴────────────────┴─────────────────┴──────────────────────┘
```
2018-10-16 10:47:17 +00:00
2023-04-19 18:03:01 +00:00
# Functions for Generating Random Numbers based on a Distribution
2022-12-22 14:10:25 +00:00
2022-12-23 09:59:43 +00:00
## randUniform
2023-04-19 18:03:01 +00:00
Returns a Float64 drawn uniformly from the interval between `min` and `max` ([continuous uniform distribution](https://en.wikipedia.org/wiki/Continuous_uniform_distribution)).
2022-12-23 09:59:43 +00:00
**Syntax**
``` sql
randUniform(min, max)
```
**Arguments**
- `min` - `Float64` - min value of the range,
- `max` - `Float64` - max value of the range.
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [Float64 ](/docs/en/sql-reference/data-types/float.md ).
2022-12-23 09:59:43 +00:00
**Example**
``` sql
SELECT randUniform(5.5, 10) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-23 09:59:43 +00:00
┌─randUniform(5.5, 10)─┐
│ 8.094978491443102 │
│ 7.3181248914450885 │
│ 7.177741903868262 │
│ 6.483347380953762 │
│ 6.122286382885112 │
└──────────────────────┘
```
2022-12-22 14:10:25 +00:00
## randNormal
2023-04-19 18:03:01 +00:00
Returns a Float64 drawn from a [normal distribution ](https://en.wikipedia.org/wiki/Normal_distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
2023-04-19 18:03:01 +00:00
randNormal(mean, variance)
2022-12-22 14:10:25 +00:00
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `mean` - `Float64` - mean value of distribution,
2022-12-22 14:10:25 +00:00
- `variance` - `Float64` - [variance ](https://en.wikipedia.org/wiki/Variance ).
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [Float64 ](/docs/en/sql-reference/data-types/float.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randNormal(10, 2) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌──randNormal(10, 2)─┐
│ 13.389228911709653 │
│ 8.622949707401295 │
│ 10.801887062682981 │
│ 4.5220192605895315 │
│ 10.901239123982567 │
└────────────────────┘
```
## randLogNormal
2023-04-19 18:03:01 +00:00
Returns a Float64 drawn from a [log-normal distribution ](https://en.wikipedia.org/wiki/Log-normal_distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
2023-04-19 18:03:01 +00:00
randLogNormal(mean, variance)
2022-12-22 14:10:25 +00:00
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `mean` - `Float64` - mean value of distribution,
2022-12-22 14:10:25 +00:00
- `variance` - `Float64` - [variance ](https://en.wikipedia.org/wiki/Variance ).
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [Float64 ](/docs/en/sql-reference/data-types/float.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randLogNormal(100, 5) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─randLogNormal(100, 5)─┐
│ 1.295699673937363e48 │
│ 9.719869109186684e39 │
│ 6.110868203189557e42 │
│ 9.912675872925529e39 │
│ 2.3564708490552458e42 │
└───────────────────────┘
```
## randBinomial
2023-04-19 18:03:01 +00:00
Returns a UInt64 drawn from a [binomial distribution ](https://en.wikipedia.org/wiki/Binomial_distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randBinomial(experiments, probability)
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `experiments` - `UInt64` - number of experiments,
2022-12-22 14:10:25 +00:00
- `probability` - `Float64` - probability of success in each experiment (values in `0...1` range only).
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [UInt64 ](/docs/en/sql-reference/data-types/int-uint.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randBinomial(100, .75) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─randBinomial(100, 0.75)─┐
│ 74 │
│ 78 │
│ 76 │
│ 77 │
│ 80 │
└─────────────────────────┘
```
## randNegativeBinomial
2023-04-19 18:03:01 +00:00
Returns a UInt64 drawn from a [negative binomial distribution ](https://en.wikipedia.org/wiki/Negative_binomial_distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randNegativeBinomial(experiments, probability)
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `experiments` - `UInt64` - number of experiments,
2022-12-22 14:10:25 +00:00
- `probability` - `Float64` - probability of failure in each experiment (values in `0...1` range only).
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [UInt64 ](/docs/en/sql-reference/data-types/int-uint.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randNegativeBinomial(100, .75) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─randNegativeBinomial(100, 0.75)─┐
│ 33 │
│ 32 │
│ 39 │
│ 40 │
│ 50 │
└─────────────────────────────────┘
```
## randPoisson
2023-04-19 18:03:01 +00:00
Returns a UInt64 drawn from a [Poisson distribution ](https://en.wikipedia.org/wiki/Poisson_distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randPoisson(n)
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `n` - `UInt64` - mean number of occurrences.
2022-12-22 14:10:25 +00:00
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [UInt64 ](/docs/en/sql-reference/data-types/int-uint.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randPoisson(10) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─randPoisson(10)─┐
│ 8 │
│ 8 │
│ 7 │
│ 10 │
│ 6 │
└─────────────────┘
```
## randBernoulli
2023-04-19 18:03:01 +00:00
Returns a UInt64 drawn from a [Bernoulli distribution ](https://en.wikipedia.org/wiki/Bernoulli_distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randBernoulli(probability)
```
**Arguments**
- `probability` - `Float64` - probability of success (values in `0...1` range only).
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [UInt64 ](/docs/en/sql-reference/data-types/int-uint.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randBernoulli(.75) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─randBernoulli(0.75)─┐
│ 1 │
│ 1 │
│ 0 │
│ 1 │
│ 1 │
└─────────────────────┘
```
## randExponential
2023-04-19 18:03:01 +00:00
Returns a Float64 drawn from a [exponential distribution ](https://en.wikipedia.org/wiki/Exponential_distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randExponential(lambda)
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `lambda` - `Float64` - lambda value.
2022-12-22 14:10:25 +00:00
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [Float64 ](/docs/en/sql-reference/data-types/float.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randExponential(1/10) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─randExponential(divide(1, 10))─┐
│ 44.71628934340778 │
│ 4.211013337903262 │
│ 10.809402553207766 │
│ 15.63959406553284 │
│ 1.8148392319860158 │
└────────────────────────────────┘
```
## randChiSquared
2023-04-19 18:03:01 +00:00
Returns a Float64 drawn from a [Chi-square distribution ](https://en.wikipedia.org/wiki/Chi-squared_distribution ) - a distribution of a sum of the squares of k independent standard normal random variables.
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randChiSquared(degree_of_freedom)
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `degree_of_freedom` - `Float64` - degree of freedom.
2022-12-22 14:10:25 +00:00
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [Float64 ](/docs/en/sql-reference/data-types/float.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randChiSquared(10) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─randChiSquared(10)─┐
│ 10.015463656521543 │
│ 9.621799919882768 │
│ 2.71785015634699 │
│ 11.128188665931908 │
│ 4.902063104425469 │
└────────────────────┘
```
## randStudentT
2023-04-19 18:03:01 +00:00
Returns a Float64 drawn from a [Student's t-distribution ](https://en.wikipedia.org/wiki/Student%27s_t-distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randStudentT(degree_of_freedom)
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `degree_of_freedom` - `Float64` - degree of freedom.
2022-12-22 14:10:25 +00:00
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [Float64 ](/docs/en/sql-reference/data-types/float.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randStudentT(10) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌─────randStudentT(10)─┐
│ 1.2217309938538725 │
│ 1.7941971681200541 │
│ -0.28192176076784664 │
│ 0.2508897721303792 │
│ -2.7858432909761186 │
└──────────────────────┘
```
## randFisherF
2023-04-19 18:03:01 +00:00
Returns a Float64 drawn from a [F-distribution ](https://en.wikipedia.org/wiki/F-distribution ).
2022-12-22 14:10:25 +00:00
**Syntax**
``` sql
randFisherF(d1, d2)
```
**Arguments**
2023-04-19 18:03:01 +00:00
- `d1` - `Float64` - d1 degree of freedom in `X = (S1 / d1) / (S2 / d2)` ,
- `d2` - `Float64` - d2 degree of freedom in `X = (S1 / d1) / (S2 / d2)` ,
2022-12-22 14:10:25 +00:00
**Returned value**
2023-04-19 20:04:59 +00:00
- Random number.
Type: [Float64 ](/docs/en/sql-reference/data-types/float.md ).
2022-12-22 14:10:25 +00:00
**Example**
``` sql
SELECT randFisherF(10, 3) FROM numbers(5)
```
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-12-22 14:10:25 +00:00
┌──randFisherF(10, 3)─┐
│ 7.286287504216609 │
│ 0.26590779413050386 │
│ 0.22207610901168987 │
│ 0.7953362728449572 │
│ 0.19278885985221572 │
└─────────────────────┘
```
2023-04-19 18:03:01 +00:00
# Functions for Generating Random Strings
2022-12-22 14:10:25 +00:00
2023-04-19 18:03:01 +00:00
## randomString
2022-12-22 14:10:25 +00:00
2023-04-19 18:03:01 +00:00
Returns a random String of specified `length` . Not all characters may be printable.
2022-12-22 14:10:25 +00:00
2023-04-19 18:03:01 +00:00
**Syntax**
2020-05-29 02:06:21 +00:00
2023-04-19 18:03:01 +00:00
```sql
randomString(length)
```
2020-05-29 02:06:21 +00:00
2022-06-02 10:55:18 +00:00
## randomFixedString
2020-05-29 02:06:21 +00:00
2023-04-19 18:03:01 +00:00
Like `randomString` but returns a FixedString.
2022-06-02 10:55:18 +00:00
## randomPrintableASCII
2020-05-29 02:06:21 +00:00
2023-04-19 18:03:01 +00:00
Returns a random String of specified `length` . All characters are printable.
**Syntax**
```sql
randomPrintableASCII(length)
```
2022-06-02 10:55:18 +00:00
## randomStringUTF8
2020-05-29 02:06:21 +00:00
2023-04-19 18:03:01 +00:00
Returns a random String containing `length` many UTF8 codepoints. Not all characters may be printable
**Syntax**
```sql
randomStringUTF8(length)
```
2022-06-02 10:55:18 +00:00
## fuzzBits
2020-05-29 02:06:21 +00:00
**Syntax**
2023-04-19 18:03:01 +00:00
Inverts the bits of String or FixedString `s` , each with probability `prob` .
**Syntax**
2020-05-29 02:06:21 +00:00
``` sql
2023-04-19 18:03:01 +00:00
fuzzBits(s, prob)
2020-05-29 02:06:21 +00:00
```
2020-06-18 08:24:31 +00:00
2021-02-15 21:22:10 +00:00
**Arguments**
2020-05-29 02:06:21 +00:00
- `s` - `String` or `FixedString`
- `prob` - constant `Float32/64`
**Returned value**
2023-04-19 18:03:01 +00:00
Fuzzed string with same type as `s` .
2020-05-29 02:06:21 +00:00
**Example**
``` sql
SELECT fuzzBits(materialize('abacaba'), 0.1)
FROM numbers(3)
```
2020-06-18 08:24:31 +00:00
2022-05-20 00:16:27 +00:00
Result:
2023-04-19 18:03:01 +00:00
``` result
2022-05-20 00:16:27 +00:00
┌─fuzzBits(materialize('abacaba'), 0.1)─┐
│ abaaaja │
│ a*cjab+ │
│ aeca2A │
2020-05-29 02:06:21 +00:00
└───────────────────────────────────────┘
2022-05-20 00:16:27 +00:00
```