在oracle 中生成随机数
有时候我们需要使用到随机数,可以使用dbms_random 来产生各种各样的随机数。
1、初始化随机数参数的种子。
如果不指定随机数参数的种子,oracle将会使用当前时间,用户id,进程id号来生成种子。如果指定的种子相同将会生成相同的随机数(随机数是种子通过复杂的运算得到的,并不是真正的随机)。
SQL> begin
2 dbms_random.seed(1234);
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> select dbms_random.string('p',5) from dual;
DBMS_RANDOM.STRING('P',5)
-----------------------------------------------------------------
H 1AJ
SQL> begin
2 dbms_random.seed(1234);
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> select dbms_random.string('p',5) from dual;
DBMS_RANDOM.STRING('P',5)
-----------------------------------------------------------------
H 1AJ
2、使用dbms_random.random产生一个范围在[-2^32,2^31)之间的随机数。
SQL> select dbms_random.random from dual;
RANDOM
----------
620661990
SQL> select dbms_random.random from dual;
RANDOM
----------
606573780
3、使用bms_random.value 产生一个范围在[0,1)之间精度为38位的随机数。或者生成指定范围之内的随机数。
SQL> select dbms_random.value from dual;
VALUE
----------
.886022585
SQL> select dbms_random.value from dual;
VALUE
----------
.57996367
通过使用 dbms_random.value(x,y),产生范围在[x,y)之间的随机数。
SQL> select dbms_random.value(100,200) from dual;
DBMS_RANDOM.VALUE(100,200)
--------------------------
110.185899
SQL> select dbms_random.value(100,200) from dual;
DBMS_RANDOM.VALUE(100,200)
--------------------------
128.20002
3、使用 dbms_random.string(opt,len) 生成opt 类型len 长度的随机字符串。
opt 参数有:
'u', 'U'表示大写字母字符串。
'l', 'L' 表示小写字母字符串。
'a', 'A' 表示大小写混合的字符串。
'x', 'X' 表示大写的数值字母字符串串。
'p', 'P' 表示任何的可打印字符。
SQL> select dbms_random.string('U',6) from dual;
DBMS_RANDOM.STRING('U',6)
-------------------------------------------------
YTWFUB
SQL> select dbms_random.string('U',6) from dual;
DBMS_RANDOM.STRING('U',6)
-------------------------------------------------
VOJIRA
SQL> select dbms_random.string('x',5) from dual;
DBMS_RANDOM.STRING('X',5)
-------------------------------------------------
UBEGV
SQL> select dbms_random.string('x',5) from dual;
DBMS_RANDOM.STRING('X',5)
-------------------------------------------------
D4T7J