首页 > Oracle包 > dbms_random包

dbms_random包

2014年3月13日 发表评论 阅读评论

 dbms_random包主要是用来生成随机数

1) dbms_random.value 返回一个大于等于0小于等于1直接的随机数

06:44:06 SCOTT@ orcl>select  dbms_random.value from dual;

     VALUE

----------

 .72239222

2) dbms_random.value(n,m) 返回一个大于等于n小于等于m直接的随机数

06:44:43 SCOTT@ orcl>SELECT dbms_random.value(2,5)  FROM  dual;


DBMS_RANDOM.VALUE(2,5)

----------------------

            2.83884627

3) dbms_random.normal 从标准正态分布函数中返回一个随机数

4) dbms_random.string(opt,len) 返回一个随机的字符串

opt:

u或者U:仅包含大写字母

l或者L:仅包含小写字母

a或者A:仅包含字母,大小写混写

x或者X:任意的数字和字母组合,字母大写

p或者P:任意可打印的字符

其他的和u效果一样

len:随机字符串的长度

06:55:44 SCOTT@ orcl>select dbms_random.string('u',4) result  from dual;


RESULT

----------

DYLP


1 row selected.


Elapsed: 00:00:00.01

06:55:45 SCOTT@ orcl>select dbms_random.string('a',4) result  from dual;


RESULT

----------

YhMB


1 row selected.


Elapsed: 00:00:00.01

06:55:51 SCOTT@ orcl>select dbms_random.string('x',4) result  from dual;


RESULT

----------

ISOJ


1 row selected.


Elapsed: 00:00:00.02

06:55:57 SCOTT@ orcl>select dbms_random.string('x',4) result  from dual;


RESULT

----------

ZENX


1 row selected.


Elapsed: 00:00:00.02

06:56:01 SCOTT@ orcl>select dbms_random.string('p',4) result  from dual;


RESULT

----------

D\]`


1 row selected.

06:56:06 SCOTT@ orcl>select dbms_random.string('l',4) result  from dual;


RESULT

----------

lkrd


1 row selected.

3)在产生随机数之前,DBMS_RANDOM可以被显示的初始化,但这不是必须的。如果你没有初始化,它会以时间,用户ID,进程ID进行初始化。

dbms_random.seed可以显示的进行初始化,如果你两次提供的种子一样,那么两次产生的随机数也将是一样的。

session  1

07:05:41 SCOTT@ orcl>exec dbms_random.seed(100);


PL/SQL procedure successfully completed.


Elapsed: 00:00:00.00

07:05:51 SCOTT@ orcl>select dbms_random.value from dual;


     VALUE

----------

  .5380177


1 row selected.


Elapsed: 00:00:00.00

07:06:01 SCOTT@ orcl>select dbms_random.value from dual;


     VALUE

----------

.674995365


1 row selected.


Elapsed: 00:00:00.00

07:06:03 SCOTT@ orcl>select dbms_random.value from dual;


     VALUE

----------

.653622701


1 row selected.


Elapsed: 00:00:00.00

session 2:

07:05:33 SCOTT@ orcl>exec dbms_random.seed(100);


PL/SQL procedure successfully completed.


Elapsed: 00:00:00.00

07:06:27 SCOTT@ orcl>select dbms_random.value from dual;


     VALUE

----------

  .5380177


1 row selected.


Elapsed: 00:00:00.00

07:06:37 SCOTT@ orcl>select dbms_random.value from dual;


     VALUE

----------

.674995365


1 row selected.


Elapsed: 00:00:00.00

07:06:40 SCOTT@ orcl>select dbms_random.value from dual;


     VALUE

----------

.653622701


1 row selected.


Elapsed: 00:00:00.01

对比一下session 1 seesion 2 的结果明白什么意思了吧!

4)

dbms_random.initialize;

dbms_random.random;

dbms_random.terminate

3个过程已经过时,现在支持只是为了向后兼容,不推荐使用,这里不再介绍了。

 

分类: Oracle包 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.