跳到主要内容
跳到主要内容

生成随机数的函数

本节中的所有函数接受零个或一个参数。参数的唯一用途(如果提供)是防止 公共子表达式消除,以确保同一行中两次不同执行同一个随机函数时返回不同的随机值。

相关内容

备注

随机数是通过非加密算法生成的。

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 - 分布的 标准差

返回值

示例

结果:

randLogNormal

返回一个随机的 Float64,从 对数正态分布 中抽取。

语法

参数

  • mean - Float64 - 分布的均值,
  • stddev - Float64 - 分布的 标准差

返回值

示例

结果:

randBinomial

二项分布 中返回一个随机的 UInt64。

语法

参数

  • experiments - UInt64 - 实验的数量,
  • probability - Float64 - 每次实验成功的概率,值介于 0 和 1 之间。

返回值

示例

结果:

randNegativeBinomial

负二项分布 中返回一个随机的 UInt64。

语法

参数

  • experiments - UInt64 - 实验的数量,
  • probability - Float64 - 每次实验失败的概率,值介于 0 和 1 之间。

返回值

示例

结果:

randPoisson

泊松分布 中返回一个随机的 UInt64。

语法

参数

  • n - UInt64 - 发生的平均次数。

返回值

示例

结果:

randBernoulli

伯努利分布 中返回一个随机的 UInt64。

语法

参数

  • probability - Float64 - 成功的概率,值介于 0 和 1 之间。

返回值

示例

结果:

randExponential

指数分布 中返回一个随机的 Float64。

语法

参数

  • lambda - Float64 - lambda 值。

返回值

示例

结果:

randChiSquared

卡方分布 中返回一个随机的 Float64 - k 个独立标准正态随机变量平方和的分布。

语法

参数

  • degree_of_freedom - Float64 - 自由度。

返回值

示例

结果:

randStudentT

Student's t-分布 中返回一个随机的 Float64。

语法

参数

  • degree_of_freedom - Float64 - 自由度。

返回值

示例

结果:

randFisherF

F-分布 中返回一个随机的 Float64。

语法

参数

  • d1 - Float64 - d1 自由度,在 X = (S1 / d1) / (S2 / d2) 中,
  • d2 - Float64 - d2 自由度,在 X = (S1 / d1) / (S2 / d2) 中。

返回值

示例

结果:

randomString

生成指定长度的字符串,填充随机字节(包括零字节)。并非所有字符都是可打印的。

语法

参数

  • length — 字符串的字节长度。正整数。

返回值

  • 填充随机字节的字符串。 String

示例

查询:

结果:

randomFixedString

生成指定长度的二进制字符串,填充随机字节(包括零字节)。并非所有字符都是可打印的。

语法

参数

  • length — 字符串的字节长度。 UInt64

返回值

示例

查询:

结果:

randomPrintableASCII

生成一组随机的 ASCII 字符的字符串。所有字符都是可打印的。 如果传入 length < 0,函数的行为是未定义的。

语法

参数

  • length — 字符串的字节长度。正整数。

返回值

  • 一组随机的 ASCII 可打印字符的字符串。 String

示例

randomStringUTF8

生成指定长度的随机字符串。结果字符串包含有效的 UTF-8 码点。码点的值可能超出分配的 Unicode 范围。

语法

参数

  • length — 字符串的码点长度。 UInt64

返回值

  • UTF-8 随机字符串。 String

示例

查询:

结果:

fuzzBits

语法

翻转字符串或固定字符串 s 的位,每个位翻转的概率为 prob

语法

参数

  • s - StringFixedString
  • prob - 常量 Float32/64,介于 0.0 和 1.0 之间。

返回值

模糊字符串,类型与 s 相同。

示例

结果: