用于生成随机数的函数
本节中的所有函数只接受 0 个或 1 个参数。提供参数 (如果有) 的唯一作用是用于防止公共子表达式消除,从而保证在同一行内对同一个随机函数的多次执行会返回不同的随机值。
相关内容
随机数由非加密算法生成。
以下文档内容是从 system.functions 系统表生成的。
fuzzBits
引入版本:v20.5.0
以概率 p 对输入字符串 s 的每一位比特执行翻转。
语法
参数
s— 要执行比特模糊处理的 String 或 FixedString 类型的值String或FixedStringp— 每一位翻转的概率,取值为介于0.0和1.0之间的数值Float*
返回值
返回一个经过模糊处理的字符串,其类型与 s 相同。String 或 FixedString
示例
用法示例
rand
自 v1.1.0 起提供
返回一个服从均匀分布的随机 UInt32 数值。
使用线性同余生成器,其初始状态由系统获取。这意味着虽然结果看起来是随机的,但并非真正随机,如果已知初始状态,其输出是可以被预测的。 在对真正随机性有严格要求的场景中,建议使用诸如系统级调用或集成外部库等替代方法。
语法
别名: rand32
参数
返回值
返回一个 UInt32 类型的随机数。UInt32
示例
用法示例
rand64
引入版本:v1.1.0
返回一个服从均匀分布的 UInt64 随机数。
使用从系统获取初始状态的线性同余发生器,这意味着虽然它看起来是随机的,但并非真正随机;如果已知初始状态,则可能被预测。 在对真正随机性要求严格的场景中,请考虑使用其他方法,例如通过系统级调用或集成外部库来生成随机数。
语法
参数
返回值
返回一个服从均匀分布的随机 UInt64 整数。UInt64
示例
用法示例
randBernoulli
引入版本:v22.10.0
返回一个服从 Bernoulli 分布 的随机 Float64 数值。
语法
参数
返回值
返回从指定伯努利分布中生成的随机 Float64 数值。UInt64
示例
用法示例
randBinomial
自 v22.10.0 引入
返回一个从 二项分布 中抽取的随机 Float64 数值。
语法
参数
experiments— 试验次数UInt64probability— 每次试验成功的概率,取值在0到1之间Float64x— 可选且会被忽略。该参数的唯一作用是在同一个函数调用在查询中被多次使用时,防止发生公共子表达式消除。Any
返回值
返回一个从指定二项分布中生成的随机 Float64 数值。UInt64
示例
用法示例
randCanonical
自 v22.11.0 引入
返回一个服从均匀分布的随机 Float64 浮点数,取值范围在 0 (包含) 到 1 (不包含) 之间。
语法
参数
返回值
返回一个随机的 Float64 浮点数。Float64
示例
用法示例
randChiSquared
引入版本:v22.10.0
返回一个从 卡方分布 中抽取的随机 Float64 类型数值。
语法
参数
返回值
返回从指定卡方分布中抽取的随机 Float64 数值。Float64
示例
用法示例
randConstant
引入版本:v1.1.0
生成一个在当前查询执行期间对所有行都保持不变的随机值。
该函数:
- 在单次查询执行中,为每一行返回相同的随机值
- 在不同的查询执行中生成不同的值
适用于在数据集的所有行上应用一致的随机种子或标识符。
语法
参数
返回值
返回一个类型为 UInt32 的列,在每一行中都包含相同的随机值。UInt32
示例
基本用法
带参数时的用法
randExponential
自 v22.10.0 起引入
返回从指数分布中抽取的随机 Float64 数值。
语法
参数
返回值
返回一个从指定指数分布中抽取的随机 Float64 数值。Float64
示例
用法示例
randFisherF
引入于:v22.10.0
返回一个从 F 分布 中抽取的 Float64 类型随机数。
语法
参数
d1—X = (S1 / d1) / (S2 / d2)中的 d1 的自由度。Float64d2—X = (S1 / d1) / (S2 / d2)中的 d2 的自由度。Float64x— 可选且会被忽略。该参数唯一的用途是在同一查询中多次使用相同的函数调用时,防止发生公共子表达式消除。Any
返回值
返回一个从指定 F 分布中抽取的随机 Float64 数值。Float64
示例
用法示例
randLogNormal
引入于:v22.10.0
返回一个从 对数正态分布 中抽取的随机 Float64 浮点数。
语法
参数
mean— 分布的均值。Float64stddev— 分布的标准差。Float64x— 可选参数,会被忽略。该参数唯一目的,是在同一个查询中多次使用相同函数调用时防止公共子表达式消除。Any
返回值
返回一个从指定对数正态分布中抽取的随机 Float64 数值。Float64
示例
用法示例
randNegativeBinomial
自 v22.10.0 起引入
返回一个从负二项分布中抽取的随机 Float64 值。
语法
参数
experiments— 实验次数。UInt64probability— 每次实验失败的概率,取值范围在0和1之间。Float64x— 可选且会被忽略。该参数的唯一目的,是在同一个查询中多次使用相同函数调用时,防止公共子表达式消除。Any
返回值
返回一个从指定负二项分布中抽取的随机 Float64 数值 UInt64
示例
用法示例
randNormal
引入于:v22.10.0
返回一个服从正态分布的随机 Float64 数值。
语法
参数
mean— 分布的均值Float64stddev— 分布的标准差Float64x— 可选参数,且会被忽略。该参数的唯一作用,是在同一个查询中多次使用相同函数调用时,防止公共子表达式消除。Any
返回值
返回一个从指定正态分布中抽取的随机 Float64 数值。Float64
示例
用法示例
randPoisson
引入版本:v22.10.0
返回一个服从泊松分布的随机 Float64 数值。
语法
参数
返回值
返回一个从指定泊松分布中生成的随机 Float64 数值。UInt64
示例
用法示例
randStudentT
引入于:v22.10.0
返回一个从 Student's t 分布 中抽取的随机 Float64 类型的数值。
语法
参数
返回值
返回从指定的 Student's t 分布中抽取的随机 Float64 数值。Float64
示例
使用示例
randUniform
自 v22.10.0 起提供
返回一个在区间 上服从均匀分布的随机 Float64 数值。
语法
参数
min— 区间左边界 (包含) 。Float64max— 区间右边界 (包含) 。Float64x— 可选且会被忽略。此参数的唯一用途是在同一个查询中多次使用相同函数调用时,防止公共子表达式消除。Any
返回值
返回一个在由 min 和 max 形成的区间上均匀分布的随机数。Float64
示例
使用示例
randomFixedString
引入自:v20.5.0
生成一个具有指定字符个数的随机定长字符串。 返回的字符不一定是 ASCII 字符,也就是说这些字符可能不可打印。
语法
参数
length— 字符串的字节长度 (以字节为单位) 。UInt*
返回值
返回一个用随机字节填充的字符串。FixedString
示例
使用示例
randomPrintableASCII
引入自:v20.1.0
生成一个包含指定数量字符的随机ASCII字符串。
如果传入 length < 0,则该函数的行为未定义。
语法
参数
返回值
返回一个由随机可打印 ASCII 字符组成的字符串。String
示例
用法示例
randomString
引入版本:v20.5.0
生成具有指定长度的随机字符串。 返回的字符不一定是 ASCII 字符,即可能是不可打印字符。
语法
参数
返回值
返回一个由随机字节填充的字符串。String
示例
用法示例
randomStringUTF8
引入版本:v20.5.0
生成具有指定码点数量的随机 UTF-8 字符串。 不会返回来自未分配的平面 (第 4 到第 13 平面) 的码点。 与 ClickHouse 服务器交互的客户端仍有可能无法正确显示生成的 UTF-8 字符串。
语法
参数
length— 字符串的长度 (以 Unicode 码点为单位) 。(U)Int*
返回值
返回一个由随机 UTF-8 码点组成的字符串。String
示例
使用示例