用于生成随机数的函数
本节中的所有函数接受零个或一个参数。参数的唯一用途(如果提供)是防止 公共子表达式消除,以确保同一行中对同一随机函数的两次不同执行返回不同的随机值。
相关内容
随机数是通过非密码算法生成的。
rand
返回均匀分布的随机 UInt32 数字。
使用线性同余生成器,初始状态来源于系统,这意味着虽然它看起来是随机的,但并不是真正的随机,如果知道初始状态,则可以预测。在真正的随机性至关重要的场景中,考虑使用系统级调用或集成外部库等替代方法。
语法
别名: rand32
参数
无。
返回值
返回类型为 UInt32 的数字。
示例
rand64
返回随机 UInt64 整数 (UInt64)。
语法
参数
无。
返回值
返回均匀分布的 UInt64 数字。
使用线性同余生成器,初始状态来源于系统,这意味着虽然它看起来是随机的,但并不是真正的随机,如果知道初始状态,则可以预测。在真正的随机性至关重要的场景中,考虑使用系统级调用或集成外部库等替代方法。
示例
randCanonical
返回随机 Float64 数字。
语法
参数
无。
返回值
返回介于 0(包含)和 1(不包含)之间的 Float64 值。
示例
randConstant
生成单个常量列,其值为随机值。与 rand
不同,此函数确保在生成的列的每一行中显示相同的随机值,这使得在单个查询中需要一致随机种子的情况非常有用。
语法
参数
- [x](可选): 影响生成随机值的可选表达式。即使提供,结果值在同一查询执行中仍将是常量。使用相同表达式的不同查询很可能会生成不同的常值。
返回值
返回类型为 UInt32 的列,在每一行中包含相同的随机值。
实现细节
对于每次查询执行,实际输出都会不同,即使使用相同的可选表达式。可选参数可能不会显著改变生成的值,与单独使用 randConstant
相比。
示例
randUniform
返回从区间 [min
, max
] 均匀抽取的随机 Float64。
语法
参数
min
-Float64
- 范围的左边界,max
-Float64
- 范围的右边界。
返回值
返回类型为 Float64 的随机数字。
示例
randNormal
返回从 正态分布 中抽取的随机 Float64。
语法
参数
mean
-Float64
- 分布的平均值,variance
-Float64
- 分布的 方差。
返回值
- 随机数字。 Float64。
示例
结果:
randLogNormal
返回从 对数正态分布 中抽取的随机 Float64。
语法
参数
mean
-Float64
- 分布的平均值,variance
-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
返回从 学生 t 分布 中抽取的随机 Float64。
语法
参数
degree_of_freedom
-Float64
- 自由度。
返回值
- 随机数字。 Float64。
示例
结果:
randFisherF
返回从 F 分布 中抽取的随机 Float64。
语法
参数
d1
-Float64
-X = (S1 / d1) / (S2 / d2)
中的 d1 自由度,d2
-Float64
-X = (S1 / d1) / (S2 / d2)
中的 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
- 介于 0.0 和 1.0 之间的常量Float32/64
。
返回值
模糊字符串,与 s
具有相同类型。
示例
结果: