生成随机数的函数
本节中的所有函数接受零个或一个参数。参数的唯一用途(如果提供)是防止 公共子表达式消除,以确保同一行中两次不同执行同一个随机函数时返回不同的随机值。
相关内容
随机数是通过非加密算法生成的。
rand
返回一个具有均匀分布的随机 UInt32 数字。
使用线性同余生成器,初始状态由系统获得,这意味着尽管它看起来是随机的,但并不是真正的随机,如果已知初始状态,则可以预测。在真正的随机性至关重要的场景中,考虑使用系统级调用或与外部库集成等替代方法。
语法
别名: rand32
参数
无。
返回值
返回类型为 UInt32 的数字。
示例
rand64
返回一个随机的 UInt64 整数 (UInt64) 数字。
语法
参数
无。
返回值
返回具有均匀分布的 UInt64 数字。
使用线性同余生成器,初始状态由系统获得,这意味着尽管它看起来是随机的,但并不是真正的随机,如果已知初始状态,则可以预测。在真正的随机性至关重要的场景中,考虑使用系统级调用或与外部库集成等替代方法。
示例
randCanonical
返回一个随机的 Float64 数字。
语法
参数
无。
返回值
返回在 0(包含)和 1(不包含)之间的 Float64 值。
示例
randConstant
生成一个填充随机值的单一常量列。与 rand
不同,此函数确保在生成的列的每一行中出现相同的随机值,这使得它在需要在单个查询中跨行保持一致的随机种子时非常有用。
语法
参数
- [x](可选): 一个可选表达式,影响生成的随机值。即使提供了该参数,结果值在同一查询执行中仍将保持常量。使用相同表达式的不同查询将可能生成不同的常量值。
返回值
返回类型为 UInt32 的列,其中每一行都包含相同的随机值。
实现细节
即使使用相同的可选表达式,实际输出在每次查询执行中也会不同。与单独使用 randConstant
相比,可选参数可能不会显著改变生成的值。
示例
randUniform
返回一个随机的 Float64,从区间 [min
, max
] 中均匀抽取。
语法
参数
min
-Float64
- 区间的左边界,max
-Float64
- 区间的右边界。
返回值
一个类型为 Float64 的随机数字。
示例
randNormal
返回一个随机的 Float64,从 正态分布 中抽取。
语法
参数
mean
-Float64
- 分布的均值,stddev
-Float64
- 分布的 标准差。
返回值
- 随机数字。 Float64。
示例
结果:
randLogNormal
返回一个随机的 Float64,从 对数正态分布 中抽取。
语法
参数
mean
-Float64
- 分布的均值,stddev
-Float64
- 分布的 标准差。
返回值
- 随机数字。 Float64。
示例
结果:
randBinomial
从 二项分布 中返回一个随机的 UInt64。
语法
参数
experiments
-UInt64
- 实验的数量,probability
-Float64
- 每次实验成功的概率,值介于 0 和 1 之间。
返回值
- 随机数字。 UInt64。
示例
结果:
randNegativeBinomial
从 负二项分布 中返回一个随机的 UInt64。
语法
参数
experiments
-UInt64
- 实验的数量,probability
-Float64
- 每次实验失败的概率,值介于 0 和 1 之间。
返回值
- 随机数字。 UInt64。
示例
结果:
randPoisson
从 泊松分布 中返回一个随机的 UInt64。
语法
参数
n
-UInt64
- 发生的平均次数。
返回值
- 随机数字。 UInt64。
示例
结果:
randBernoulli
从 伯努利分布 中返回一个随机的 UInt64。
语法
参数
probability
-Float64
- 成功的概率,值介于 0 和 1 之间。
返回值
- 随机数字。 UInt64。
示例
结果:
randExponential
从 指数分布 中返回一个随机的 Float64。
语法
参数
lambda
-Float64
- lambda 值。
返回值
- 随机数字。 Float64。
示例
结果:
randChiSquared
从 卡方分布 中返回一个随机的 Float64 - k 个独立标准正态随机变量平方和的分布。
语法
参数
degree_of_freedom
-Float64
- 自由度。
返回值
- 随机数字。 Float64。
示例
结果:
randStudentT
从 Student's t-分布 中返回一个随机的 Float64。
语法
参数
degree_of_freedom
-Float64
- 自由度。
返回值
- 随机数字。 Float64。
示例
结果:
randFisherF
从 F-分布 中返回一个随机的 Float64。
语法
参数
d1
-Float64
- d1 自由度,在X = (S1 / d1) / (S2 / d2)
中,d2
-Float64
- d2 自由度,在X = (S1 / d1) / (S2 / d2)
中。
返回值
- 随机数字。 Float64。
示例
结果:
randomString
生成指定长度的字符串,填充随机字节(包括零字节)。并非所有字符都是可打印的。
语法
参数
length
— 字符串的字节长度。正整数。
返回值
- 填充随机字节的字符串。 String。
示例
查询:
结果:
randomFixedString
生成指定长度的二进制字符串,填充随机字节(包括零字节)。并非所有字符都是可打印的。
语法
参数
length
— 字符串的字节长度。 UInt64。
返回值
- 填充随机字节的字符串。 FixedString。
示例
查询:
结果:
randomPrintableASCII
生成一组随机的 ASCII 字符的字符串。所有字符都是可打印的。
如果传入 length < 0
,函数的行为是未定义的。
语法
参数
length
— 字符串的字节长度。正整数。
返回值
示例
randomStringUTF8
生成指定长度的随机字符串。结果字符串包含有效的 UTF-8 码点。码点的值可能超出分配的 Unicode 范围。
语法
参数
length
— 字符串的码点长度。 UInt64。
返回值
- UTF-8 随机字符串。 String。
示例
查询:
结果:
fuzzBits
语法
翻转字符串或固定字符串 s
的位,每个位翻转的概率为 prob
。
语法
参数
s
-String
或FixedString
,prob
- 常量Float32/64
,介于 0.0 和 1.0 之间。
返回值
模糊字符串,类型与 s
相同。
示例
结果: