12 KiB
slug | sidebar_position | sidebar_label |
---|---|---|
/en/sql-reference/functions/random-functions | 145 | Random Numbers |
Functions for Generating Random Numbers
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 such that two different execution of the same random function in a query return different random values.
Related content
:::note The random numbers are generated by non-cryptographic algorithms. :::
rand, rand32
Returns a random UInt32 number, evenly distributed accross the range of all possible UInt32 numbers.
Uses a linear congruential generator.
rand64
Returns a random UInt64 number, evenly distributed accross the range of all possible UInt64 numbers.
Uses a linear congruential generator.
randCanonical
Returns a Float64 value, evenly distributed in [0, 1).
randConstant
Like rand
but produces a constant column with a random value.
Example
SELECT rand(), rand(1), rand(number), randConstant(), randConstant(1), randConstant(number)
FROM numbers(3)
Result:
┌─────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 │
└────────────┴────────────┴──────────────┴────────────────┴─────────────────┴──────────────────────┘
Functions for Generating Random Numbers based on a Distribution
randUniform
Returns a Float64 drawn uniformly from the interval between min
and max
(continuous uniform distribution).
Syntax
randUniform(min, max)
Arguments
min
-Float64
- min value of the range,max
-Float64
- max value of the range.
Returned value
- Random number.
Type: Float64.
Example
SELECT randUniform(5.5, 10) FROM numbers(5)
Result:
┌─randUniform(5.5, 10)─┐
│ 8.094978491443102 │
│ 7.3181248914450885 │
│ 7.177741903868262 │
│ 6.483347380953762 │
│ 6.122286382885112 │
└──────────────────────┘
randNormal
Returns a Float64 drawn from a normal distribution.
Syntax
randNormal(mean, variance)
Arguments
mean
-Float64
- mean value of distribution,variance
-Float64
- variance.
Returned value
- Random number.
Type: Float64.
Example
SELECT randNormal(10, 2) FROM numbers(5)
Result:
┌──randNormal(10, 2)─┐
│ 13.389228911709653 │
│ 8.622949707401295 │
│ 10.801887062682981 │
│ 4.5220192605895315 │
│ 10.901239123982567 │
└────────────────────┘
randLogNormal
Returns a Float64 drawn from a log-normal distribution.
Syntax
randLogNormal(mean, variance)
Arguments
mean
-Float64
- mean value of distribution,variance
-Float64
- variance.
Returned value
- Random number.
Type: Float64.
Example
SELECT randLogNormal(100, 5) FROM numbers(5)
Result:
┌─randLogNormal(100, 5)─┐
│ 1.295699673937363e48 │
│ 9.719869109186684e39 │
│ 6.110868203189557e42 │
│ 9.912675872925529e39 │
│ 2.3564708490552458e42 │
└───────────────────────┘
randBinomial
Returns a UInt64 drawn from a binomial distribution.
Syntax
randBinomial(experiments, probability)
Arguments
experiments
-UInt64
- number of experiments,probability
-Float64
- probability of success in each experiment (values in0...1
range only).
Returned value
- Random number.
Type: UInt64.
Example
SELECT randBinomial(100, .75) FROM numbers(5)
Result:
┌─randBinomial(100, 0.75)─┐
│ 74 │
│ 78 │
│ 76 │
│ 77 │
│ 80 │
└─────────────────────────┘
randNegativeBinomial
Returns a UInt64 drawn from a negative binomial distribution.
Syntax
randNegativeBinomial(experiments, probability)
Arguments
experiments
-UInt64
- number of experiments,probability
-Float64
- probability of failure in each experiment (values in0...1
range only).
Returned value
- Random number.
Type: UInt64.
Example
SELECT randNegativeBinomial(100, .75) FROM numbers(5)
Result:
┌─randNegativeBinomial(100, 0.75)─┐
│ 33 │
│ 32 │
│ 39 │
│ 40 │
│ 50 │
└─────────────────────────────────┘
randPoisson
Returns a UInt64 drawn from a Poisson distribution.
Syntax
randPoisson(n)
Arguments
n
-UInt64
- mean number of occurrences.
Returned value
- Random number.
Type: UInt64.
Example
SELECT randPoisson(10) FROM numbers(5)
Result:
┌─randPoisson(10)─┐
│ 8 │
│ 8 │
│ 7 │
│ 10 │
│ 6 │
└─────────────────┘
randBernoulli
Returns a UInt64 drawn from a Bernoulli distribution.
Syntax
randBernoulli(probability)
Arguments
probability
-Float64
- probability of success (values in0...1
range only).
Returned value
- Random number.
Type: UInt64.
Example
SELECT randBernoulli(.75) FROM numbers(5)
Result:
┌─randBernoulli(0.75)─┐
│ 1 │
│ 1 │
│ 0 │
│ 1 │
│ 1 │
└─────────────────────┘
randExponential
Returns a Float64 drawn from a exponential distribution.
Syntax
randExponential(lambda)
Arguments
lambda
-Float64
- lambda value.
Returned value
- Random number.
Type: Float64.
Example
SELECT randExponential(1/10) FROM numbers(5)
Result:
┌─randExponential(divide(1, 10))─┐
│ 44.71628934340778 │
│ 4.211013337903262 │
│ 10.809402553207766 │
│ 15.63959406553284 │
│ 1.8148392319860158 │
└────────────────────────────────┘
randChiSquared
Returns a Float64 drawn from a Chi-square distribution - a distribution of a sum of the squares of k independent standard normal random variables.
Syntax
randChiSquared(degree_of_freedom)
Arguments
degree_of_freedom
-Float64
- degree of freedom.
Returned value
- Random number.
Type: Float64.
Example
SELECT randChiSquared(10) FROM numbers(5)
Result:
┌─randChiSquared(10)─┐
│ 10.015463656521543 │
│ 9.621799919882768 │
│ 2.71785015634699 │
│ 11.128188665931908 │
│ 4.902063104425469 │
└────────────────────┘
randStudentT
Returns a Float64 drawn from a Student's t-distribution.
Syntax
randStudentT(degree_of_freedom)
Arguments
degree_of_freedom
-Float64
- degree of freedom.
Returned value
- Random number.
Type: Float64.
Example
SELECT randStudentT(10) FROM numbers(5)
Result:
┌─────randStudentT(10)─┐
│ 1.2217309938538725 │
│ 1.7941971681200541 │
│ -0.28192176076784664 │
│ 0.2508897721303792 │
│ -2.7858432909761186 │
└──────────────────────┘
randFisherF
Returns a Float64 drawn from a F-distribution.
Syntax
randFisherF(d1, d2)
Arguments
d1
-Float64
- d1 degree of freedom inX = (S1 / d1) / (S2 / d2)
,d2
-Float64
- d2 degree of freedom inX = (S1 / d1) / (S2 / d2)
,
Returned value
- Random number.
Type: Float64.
Example
SELECT randFisherF(10, 3) FROM numbers(5)
Result:
┌──randFisherF(10, 3)─┐
│ 7.286287504216609 │
│ 0.26590779413050386 │
│ 0.22207610901168987 │
│ 0.7953362728449572 │
│ 0.19278885985221572 │
└─────────────────────┘
Functions for Generating Random Strings
randomString
Returns a random String of specified length
. Not all characters may be printable.
Syntax
randomString(length)
randomFixedString
Like randomString
but returns a FixedString.
randomPrintableASCII
Returns a random String of specified length
. All characters are printable.
Syntax
randomPrintableASCII(length)
randomStringUTF8
Returns a random String containing length
many UTF8 codepoints. Not all characters may be printable
Syntax
randomStringUTF8(length)
fuzzBits
Syntax
Inverts the bits of String or FixedString s
, each with probability prob
.
Syntax
fuzzBits(s, prob)
Arguments
s
-String
orFixedString
prob
- constantFloat32/64
Returned value
Fuzzed string with same type as s
.
Example
SELECT fuzzBits(materialize('abacaba'), 0.1)
FROM numbers(3)
Result:
┌─fuzzBits(materialize('abacaba'), 0.1)─┐
│ abaaaja │
│ a*cjab+ │
│ aeca2A │
└───────────────────────────────────────┘