本节中的所有函数都接受零个或一个参数。该参数 (如果提供) 的唯一作用是防止公共子表达式消除
,从而确保同一随机
函数在同一行中的两次不同调用会返回不同的随机值。
相关内容
下方文档由 system.functions 系统表自动生成。
引入版本:v20.5.0
将输入字符串 s 中的每一位以概率 p 翻转。
语法
参数
返回值
返回一个经过模糊处理且与 s 类型相同的字符串。String 或 FixedString
示例
使用示例
SELECT fuzzBits(materialize('abacaba'), 0.1)
FROM numbers(3)
┌─fuzzBits(materialize('abacaba'), 0.1)─┐
│ abaaaja │
│ a*cjab+ │
│ aeca2A │
└───────────────────────────────────────┘
引入版本:v1.1.0
返回一个服从均匀分布的随机 UInt32 数值。
它使用线性同余生成器,初始状态取自系统。这意味着它虽然看起来是随机的,但并非真正随机;如果初始状态已知,结果就可以被预测。
如果场景对真正的随机性要求很高,请考虑使用系统级调用等其他方法,或集成外部库。
语法
别名: rand32
参数
x — 可选,会被忽略。该参数的唯一作用是在同一查询中多次使用相同的函数调用时,防止发生公共子表达式消除。Any
返回值
返回一个 UInt32 类型的随机数。UInt32
示例
用法示例
引入版本:v1.1.0
返回一个服从均匀分布的随机 UInt64 数值。
它使用线性同余生成器,初始状态取自系统。这意味着它虽然看起来是随机的,但并非真正的随机数;如果已知初始状态,生成结果就可能被预测。
如果场景对真正的随机性要求很高,建议改用系统级调用或集成外部库等其他方法。
语法
参数
x — 可选,会被忽略。该参数的唯一作用是:当同一查询中多次使用相同的函数调用时,防止发生公共子表达式消除。Any
返回值
返回一个服从均匀分布的随机 UInt64 数值。UInt64
示例
使用示例
引入版本:v22.10.0
返回一个从 伯努利分布 中抽取的随机 Float64 数。
语法
randBernoulli(probability[, x])
参数
probability — 成功概率,取值介于 0 和 1 之间。Float64
x — 可选,会被忽略。该参数的唯一用途是在同一查询中多次使用相同的函数调用时,防止发生公共子表达式消除。Any
返回值
返回一个从指定伯努利分布中抽样得到的随机 Float64 值。UInt64
示例
用法示例
SELECT randBernoulli(.75) FROM numbers(5)
┌─randBernoulli(0.75)─┐
│ 1 │
│ 1 │
│ 0 │
│ 1 │
│ 1 │
└─────────────────────┘
引入版本:v22.10.0
返回一个从二项分布中抽样得到的随机 Float64 数值。
语法
randBinomial(experiments, probability[, x])
参数
experiments — 实验次数 UInt64
probability — 每次实验成功的概率,取值介于 0 和 1 之间 Float64
x — 可选,会被忽略。此参数的唯一作用,是在同一个查询中多次使用相同的函数调用时,防止公共子表达式消除。Any
返回值
返回一个从指定二项分布中抽样得到的随机 Float64 数值。UInt64
示例
使用示例
SELECT randBinomial(100, .75) FROM numbers(5)
┌─randBinomial(100, 0.75)─┐
│ 74 │
│ 78 │
│ 76 │
│ 77 │
│ 80 │
└─────────────────────────┘
引入版本:v22.11.0
返回一个随机的 Float64 数值,在 0 (含) 到 1 (不含) 之间服从均匀分布。
语法
参数
x — 可选,会被忽略。该参数的唯一作用是:当同一查询中多次使用相同的函数调用时,防止发生公共子表达式消除。Any
返回值
返回一个随机的 Float64 值。Float64
示例
使用示例
引入版本:v22.10.0
返回一个从卡方分布中抽取的随机 Float64 数值。
语法
randChiSquared(degree_of_freedom[, x])
参数
返回值
返回一个从指定卡方分布中抽样得到的随机 Float64 数。Float64
示例
使用示例
SELECT randChiSquared(10) FROM numbers(5)
┌─randChiSquared(10)─┐
│ 10.015463656521543 │
│ 9.621799919882768 │
│ 2.71785015634699 │
│ 11.128188665931908 │
│ 4.902063104425469 │
└────────────────────┘
首次引入于:v1.1.0
生成一个随机值,并在当前查询执行的所有行中保持不变。
此函数:
- 在单次查询中,对每一行都返回相同的随机值
- 在不同的查询执行之间会生成不同的值
它适用于在数据集的所有行中使用一致的随机种子或标识符
语法
参数
x — 可选,且会被忽略。该参数的唯一用途,是防止在查询中多次使用同一个函数调用时发生公共子表达式消除。Any
返回值
返回一个类型为 UInt32 的列,其中每一行都包含相同的随机值。UInt32
示例
基本用法
SELECT randConstant() AS random_value;
| random_value |
|--------------|
| 1234567890 |
带参数用法
SELECT randConstant(10) AS random_value;
| random_value |
|--------------|
| 9876543210 |
引入版本:v22.10.0
返回一个服从指数分布的随机 Float64 数。
语法
randExponential(lambda[, x])
参数
lambda — 该分布的速率参数或 lambda 值 Float64
x — 可选且会被忽略。此参数的唯一作用是:当同一函数调用在一个查询中使用多次时,防止发生公共子表达式消除。Any
返回值
返回一个从指定指数分布中抽样得到的随机 Float64 数值。Float64
示例
使用示例
SELECT randExponential(1/10) FROM numbers(5)
┌─randExponential(divide(1, 10))─┐
│ 44.71628934340778 │
│ 4.211013337903262 │
│ 10.809402553207766 │
│ 15.63959406553284 │
│ 1.8148392319860158 │
└────────────────────────────────┘
引入版本:v22.10.0
返回一个服从 F 分布 的随机 Float64 数值。
语法
参数
d1 — X = (S1 / d1) / (S2 / d2) 中 d1 的自由度。 Float64
d2 — X = (S1 / d1) / (S2 / d2) 中 d2 的自由度。 Float64
x — 可选,会被忽略。该参数的唯一作用是在同一函数调用在一个查询中多次使用时,防止发生公共子表达式消除。 Any
返回值
返回一个从指定 F 分布中抽样得到的随机 Float64 数值 Float64
示例
用法示例
SELECT randFisherF(10, 3) FROM numbers(5)
┌─randFisherF(10, 20)─┐
│ 0.7204609609506184 │
│ 0.9926258472572916 │
│ 1.4010752726735863 │
│ 0.34928401507025556 │
│ 1.8216216009473598 │
└─────────────────────┘
自 v22.10.0 引入
返回一个从对数正态分布中抽样得到的随机 Float64 数。
语法
randLogNormal(mean, stddev[, x])
参数
返回值
返回一个从指定对数正态分布中随机抽样得到的 Float64 数值。Float64
示例
使用示例
SELECT randLogNormal(100, 5) FROM numbers(5)
┌─randLogNormal(100, 5)─┐
│ 1.295699673937363e48 │
│ 9.719869109186684e39 │
│ 6.110868203189557e42 │
│ 9.912675872925529e39 │
│ 2.3564708490552458e42 │
└───────────────────────┘
引入版本:v22.10.0
返回一个服从负二项分布的随机 Float64 数。
语法
randNegativeBinomial(experiments, probability[, x])
参数
experiments — 实验次数。UInt64
probability — 每次实验失败的概率,取值介于 0和1 之间。[Float64`](/reference/data-types/float)
x — 可选,会被忽略。该参数的唯一作用是在查询中多次使用相同的函数调用时,防止发生公共子表达式消除。Any
返回值
返回一个从指定负二项分布中抽样得到的随机 Float64 数值 UInt64
示例
用法示例
SELECT randNegativeBinomial(100, .75) FROM numbers(5)
┌─randNegativeBinomial(100, 0.75)─┐
│ 33 │
│ 32 │
│ 39 │
│ 40 │
│ 50 │
└─────────────────────────────────┘
引入版本:v22.10.0
返回一个服从正态分布的随机 Float64 数值。
语法
randNormal(mean, stddev[, x])
参数
返回值
返回一个从指定正态分布中抽样得到的 Float64 随机数。Float64
示例
使用示例
SELECT randNormal(10, 2) FROM numbers(5)
┌──randNormal(10, 2)─┐
│ 13.389228911709653 │
│ 8.622949707401295 │
│ 10.801887062682981 │
│ 4.5220192605895315 │
│ 10.901239123982567 │
└────────────────────┘
引入版本:v22.10.0
返回一个服从泊松分布的随机 Float64 数。
语法
参数
返回值
返回一个从指定泊松分布中抽样得到的随机 Float64 浮点数。UInt64
示例
用法示例
SELECT randPoisson(10) FROM numbers(5)
┌─randPoisson(10)─┐
│ 8 │
│ 8 │
│ 7 │
│ 10 │
│ 6 │
└─────────────────┘
引入版本:v22.10.0
返回一个服从 Student’s t-distribution 的随机 Float64 数值。
语法
randStudentT(degree_of_freedom[, x])
参数
返回值
返回一个从指定的 Student’s t 分布中抽样得到的随机 Float64 数。Float64
示例
使用示例
SELECT randStudentT(10) FROM numbers(5)
┌─────randStudentT(10)─┐
│ 1.2217309938538725 │
│ 1.7941971681200541 │
│ -0.28192176076784664 │
│ 0.2508897721303792 │
│ -2.7858432909761186 │
└──────────────────────┘
引入版本:v22.10.0
返回一个从区间 [min,max] 中按均匀分布随机抽取的 Float64 数值。
语法
randUniform(min, max[, x])
参数
返回值
返回一个从由 min 和 max 构成的区间内按均匀分布抽取的随机数。Float64
示例
使用示例
SELECT randUniform(5.5, 10) FROM numbers(5)
┌─randUniform(5.5, 10)─┐
│ 8.094978491443102 │
│ 7.3181248914450885 │
│ 7.177741903868262 │
│ 6.483347380953762 │
│ 6.122286382885112 │
└──────────────────────┘
引入版本:v20.5.0
生成一个具有指定字符数的随机定长字符串。
返回的字符不一定是 ASCII 字符,也就是说,它们可能是不可打印的。
语法
randomFixedString(length)
参数
length — 字符串的长度 (以字节为单位) 。UInt*
返回值
返回一个填充了随机字节的字符串。FixedString
示例
使用示例
SELECT randomFixedString(13) AS rnd, toTypeName(rnd)
┌─rnd──────┬─toTypeName(randomFixedString(13))─┐
│ j▒h㋖HɨZ'▒ │ FixedString(13) │
└──────────┴───────────────────────────────────┘
自 v20.1.0 引入
生成具有指定字符数的随机 ASCII 字符串。
如果传入 length < 0,则该函数的行为未定义。
语法
randomPrintableASCII(length[, x])
参数
返回值
返回一个由随机 ASCII 可打印字符组成的字符串。String
示例
使用示例
SELECT number, randomPrintableASCII(30) AS str, length(str) FROM system.numbers LIMIT 3
┌─number─┬─str────────────────────────────┬─length(randomPrintableASCII(30))─┐
│ 0 │ SuiCOSTvC0csfABSw=UcSzp2.`rv8x │ 30 │
│ 1 │ 1Ag NlJ &RCN:*>HVPG;PE-nO"SUFD │ 30 │
│ 2 │ /"+<"with:=LjJ Vm!c&hI*m#XTfzz │ 30 │
└────────┴────────────────────────────────┴──────────────────────────────────┘
引入版本:v20.5.0
生成指定字符数的随机字符串。
返回的字符不一定是 ASCII 字符,也就是说,它们可能不可打印。
语法
randomString(length[, x])
参数
返回值
返回一个由随机字节填充的字符串。String
示例
用法示例
SELECT randomString(5) AS str FROM numbers(2)
引入版本:v20.5.0
生成具有指定码点数量的随机 UTF-8 字符串。
不会返回来自未分配 plane (第 4 到第 13 平面) 的码点。
但与 ClickHouse server 交互的客户端仍可能无法正确显示生成的 UTF-8 字符串。
语法
参数
返回值
返回一个由随机 UTF-8 码点组成的字符串。String
示例
使用示例
SELECT randomStringUTF8(13)
┌─randomStringUTF8(13)─┐
│ 𘤗д兠庇 │
└──────────────────────┘