DBMS_RANDOM 系统包提供了一个内置的随机码生成器。DBMS_RANDOM 不用于加密。

DBMS_RANDOM 安全模型

此系统包应在 SYS 用户下安装。默认情况下,使用当前用户名、当前时间(精确到秒)以及当前会话初始化包。

DBMS_RANDOM 使用说明

  • DBMS_RANDOM.RANDOM 随机在 [-2^31,2^31)中生成整数。
  • DBMS_RANDOM.VALUE 随机值在 [0,1)中生成精度为 38 位的数字。

DBM_RANDOM 可以进行显示初始化,但在调用随机码生成器之前不需要初始化。如果没有执行显式初始化,它将使用日期、用户 ID 和进程 ID 自动进行初始化。

如果使用相同的种子对该包进行两次种子设定,然后以相同的方式访问,则在这两种情况下都将产生相同的结果。

在某些情况下,例如在测试时,您可能希望每次运行的随机数序列相同。在这种情况下,您可以通过调用 DBMS_RANDOM.SEED 重载来为生成器植入一个常量。要为每次运行生成不同的输出,只需忽略对“Seed”的调用,系统就会为您选择合适的种子。

DBMS_RANDOM 子程序概览

下表列出了 OceanBase 数据库当前版本所支持的 DBMS_RANDOM 子程序以及简要描述。

子程序

描述

INITIALIZE

使用种子值进行包的初始化。

NORMAL

返回正态分布的随机码。

RANDOM

生成一个随机数。

SEED

重置种子。

STRING

获取随机字符串。

TERMINATE

终止包。

VALUE

此函数获取一个大于或等于 0 且小于 1 的随机数,小数点右侧有 38 位数字(38 位精度),而重载函数获取一个随机数 x,其中 x 大于或等于最小值,且小于最大值。