random
随机数生成器
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_random | 2.0.0 | FUNC | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4790 | random | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | permuteseq tsm_system_rows tsm_system_time pg_idkit sequential_uuids |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.0.0 | 1817161514 | pg_random | - |
| RPM | PIGSTY | 2.0.0 | 1817161514 | pg_random_$v | - |
| DEB | PIGSTY | 2.0.0 | 1817161514 | postgresql-$v-random | - |
构建
您可以使用 pig build 命令构建 pg_random 扩展的 RPM / DEB 包:
pig build pkg pg_random # 构建 RPM / DEB 包
安装
您可以直接安装 pg_random 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_random; # 当前活跃 PG 版本安装
pig ext install -y pg_random -v 18 # PG 18
pig ext install -y pg_random -v 17 # PG 17
pig ext install -y pg_random -v 16 # PG 16
pig ext install -y pg_random -v 15 # PG 15
pig ext install -y pg_random -v 14 # PG 14
dnf install -y pg_random_18 # PG 18
dnf install -y pg_random_17 # PG 17
dnf install -y pg_random_16 # PG 16
dnf install -y pg_random_15 # PG 15
dnf install -y pg_random_14 # PG 14
apt install -y postgresql-18-random # PG 18
apt install -y postgresql-17-random # PG 17
apt install -y postgresql-16-random # PG 16
apt install -y postgresql-15-random # PG 15
apt install -y postgresql-14-random # PG 14
创建扩展:
CREATE EXTENSION random;
用法
提供为各种数据类型生成随机值的函数,通过种子控制输出的可重现性。
CREATE EXTENSION random;
函数
所有函数接受 seed(用于可重现性)和 nvalues(不同值的数量)参数。
| 函数 | 说明 |
|---|---|
random_string(seed, nvalues, min_length, max_length) | 随机 ASCII 字符串 |
random_bytea(seed, nvalues, min_length, max_length) | 随机 bytea |
random_int(seed, nvalues, min_value, max_value) | 随机 32 位整数 |
random_bigint(seed, nvalues, min_value, max_value) | 随机 64 位整数 |
random_real(seed, nvalues, min_value, max_value) | 随机 32 位浮点数 |
random_double_precision(seed, nvalues, min_value, max_value) | 随机 64 位浮点数 |
random_inet(seed, nvalues) | 随机 INET 地址(/32 掩码) |
random_cnet(seed, nvalues) | 随机 CIDR,掩码为 8/16/24/32 |
random_cnet2(seed, nvalues) | 随机 CIDR,每个掩码长度均等分配 |
random_macaddr(seed, nvalues) | 随机 6 字节 MAC 地址 |
random_macaddr8(seed, nvalues) | 随机 8 字节 MAC 地址 |
示例
-- 生成可重现的随机整数
SELECT random_int(42, 100, 1, 1000) FROM generate_series(1, 10);
-- 长度为 5-10 的随机字符串
SELECT random_string(42, 1000, 5, 10) FROM generate_series(1, 5);
-- 随机 IP 地址
SELECT random_inet(42, 256) FROM generate_series(1, 5);