模块名称:rand
可通过help rand查看帮助。
功能描述:提供随机数生成、随机抽样和随机化操作
函数目录#
| 函数组 | 函数名 | 调用格式 | 核心功能 |
|---|---|---|---|
| 布尔生成 | ratio | Rand.ratio [numerator] [denominator] | 按概率生成布尔值 |
| 字符串生成 | alpha | Rand.alpha [length] | 生成随机字母字符串 |
| 字符串生成 | alphanum | Rand.alphanum [length] | 生成随机字母数字字符串 |
| 数值生成 | int | Rand.int [min] [max] | 生成随机整数 |
| 抽样操作 | choose | Rand.choose [list] | 从列表中随机抽取元素 |
| 列表操作 | shuffle | Rand.shuffle [list] | 随机打乱列表顺序 |
函数详解#
1. Rand.ratio - 概率布尔生成#
参数说明:
| 参数模式 | 参数类型 | 作用描述 |
|---|---|---|
| 无参数 | - | 默认返回50%概率的true |
| 单参数 | Float | 指定true的概率(0.0~1.0) |
| 双参数 | Integer, Integer | 分子/分母形式指定概率(如3 5表示3/5概率) |
返回值:Boolean
示例:
1# 基础调用
2Rand.ratio # => true (50%概率)
3Rand.ratio 0.3 # => false (70%概率)
4
5# 分数形式
6Rand.ratio 1 4 # => true (25%概率)2. Rand.alpha - 随机字母字符串#
参数说明:
| 参数模式 | 参数类型 | 作用描述 |
|---|---|---|
| 无参数 | - | 返回单个随机字母 |
| 单参数 | Integer | 指定生成字符串长度 |
返回值:String
示例:
1Rand.alpha # => "k"
2Rand.alpha 5 # => "qjZRy"3. Rand.alphanum - 随机字母数字字符串#
参数说明:
| 参数模式 | 参数类型 | 作用描述 |
|---|---|---|
| 无参数 | - | 返回单个随机字母或数字 |
| 单参数 | Integer | 指定生成字符串长度 |
返回值:String
示例:
1Rand.alphanum # => "7"
2Rand.alphanum 8 # => "F3g9K2wQ"4. Rand.int - 随机整数生成#
参数说明:
| 参数模式 | 参数类型 | 作用描述 |
|---|---|---|
| 无参数 | - | 返回整个i64范围的随机整数 |
| 单参数 | Integer | 返回\[0, max\]区间整数(支持负数) |
| 双参数 | Integer, Integer | 返回\[min, max\]区间整数 |
返回值:Integer
示例:
1Rand.int # => -327683491 (示例)
2Rand.int 100 # => 57
3Rand.int -50 50 # => -125. Rand.choose - 列表随机抽样#
参数说明:
| 参数 | 类型 | 作用描述 |
|---|---|---|
| 1 | List | 待抽样的数据列表 |
返回值:列表中的任意元素(空列表返回None)
示例:
1Rand.choose [1 2 3] # => 2
2Rand.choose ["A" "B" "C"] # => "B"6. Rand.shuffle - 列表随机化#
参数说明:
| 参数 | 类型 | 作用描述 |
|---|---|---|
| 1 | List | 待随机化的数据列表 |
返回值:元素顺序随机化的新列表 示例:
1ori=List.from(0..12)
2Rand.shuffle ori # => [3, 8, 7, 11 ...]输出结果:
1┌───┬───┬───┬────┬───┬───┬───┬───┬───┬────┬───┬───┐
2│ 3 │ 8 │ 7 │ 11 │ 9 │ 2 │ 5 │ 0 │ 6 │ 10 │ 4 │ 1 │
3└───┴───┴───┴────┴───┴───┴───┴───┴───┴────┴───┴───┘使用场景示例#
批量生成测试数据:
1# 生成10个随机用户名
2fn gen_user() {
3 name = (List.join "-" [Rand.alpha(3),Rand.int(1000,9999)])
4 age = (Rand.int 18 60)
5 return [name, age]
6}
7
8repeat 10 { gen_user | print }输出示例:
1+-------------------------+
2| USERNAME AGE |
3+=========================+
4| xQz-4823 34 |
5| kFt-7391 22 |
6| ... ... |
7+-------------------------+