?
当前位置:??数据库>oracle

ORACLE中DBMS_RANDOM随机数生成包

?
分享到:
????发布时间:2014-1-14??


????本文导语:? 获取字符以及数字组成的随机数(第一个参数可以取值如下:'u','U':大写字母、'l','L':小写字母、'a','A':大、小写字母、'x','X':数字、大写字母、'p','P':可打印字符...

? 获取字符以及数字组成的随机数第一个参数可以取值如下:'u','U':大写字母、'l','L':小写字母、'a','A':大、小写字母、'x','X':数字、大写字母、'p','P':可打印字符、):

select dbms_random.string('x', 3) from dual ;

1、包定义:

sql>desc dbms_random

Element ? ?Type ? ? ?

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

SEED ? ? ? PROCEDURE

VALUE ? ? ?FUNCTION ?

NORMAL ? ? FUNCTION ?

STRING ? ? FUNCTION ?

INITIALIZE PROCEDURE

RANDOM ? ? FUNCTION ?

TERMINATE ?PROCEDURE

NUM_ARRAY ?TYPE ?

? ?DBMS_RANDOM包提供给用户获取随机数。使用DBMS_RANDOM包的时候,提供随机数种子,所谓的随机数种子就是在RANDOM算法时候使用的值。在很多编程语言中,两次随机数的种子是一样的,那么得到的随机数序列也是一样的。所以很有必要在使用DBMS_RANDOM获取随机数的时候,提供不同的种子来获取序列,DMBS_RANDOM包中的过程与函数如下:

1)INITIALIZE:

该过程初始化DMBS_RANDOM包,必须要初始化随机数种子,语法如下:

dbms_random.initialize(seed in binary_interger)

2)SEED

该过程用于重新设置随机数种子,语法如下:

DBMS_RANDOM.SEED(SEED IN BINARY_INTEGER);

3)RANDOM

该函数用于生成随机数,语法如下:

DBMS_RANDOM.RANDOM RETURN BINARY_INTEGER;

4)TERMINATE

该过程用于关闭DBMS_RANDOM包,语法如下:

DBMS_RANDOM.TERMINATE;


2、使用举例: ?

下面是几个获取随机数的例子:

SET SERVEROUT ON; DECLARE ?n_randomNum NUMBER(10); ?n_randomSeed CONSTANT NUMBER :=98765; BEGIN ? ?dbms_random.initialize(n_randomSeed); ? ?FOR i IN 0..10 LOOP ? ? ? ? ? ? ? ? ? ? ? ? ? n_randomNum := abs(dbms_random.random()/ n_randomSeed); ? ? ? ? dbms_output.put_line(n_randomNum); ? ?END LOOP; ? ?dbms_random.terminate; END;


得到0到10之间的整数

SELECT CEIL(DBMS_RANDOM.VALUE(0,10)) FROM DUAL;

得到0到1之间的一个小数:

SELECT dbms_random.VALUE FROM dual;

得到0到100之间的一个小数:

SELECT dbms_random.VALUE(0,100) FROM dual;

a、value() 用于返回两个数值之间的随机数,value(low,high)

? ? ?SQL> select dbms_random.value() from dual;

? ? ?DBMS_RANDOM.VALUE() ?默认是从0到1间的数

? ? ? -------------------

? ? ?0.0536824248407651

? ? ?SQL> select dbms_random.value(10,100) from dual;

? ? ?DBMS_RANDOM.VALUE(10,100)

? ? ?-------------------------

? ? ?29.2420951206225


b、random() 返回的值介于2的31次方和-2的31次方之间的整形数值

? ? SQL> ?select dbms_random.random() from dual;


? ? DBMS_RANDOM.RANDOM()

? ? --------------------

? ? ? ? ?2071097056

? ? ?SQL> ?select dbms_random.random() from dual;

? ? ? DBMS_RANDOM.RANDOM()

? ? ?--------------------

? ? ? ? -1589187025

c、string('parameter',length)

? ? SQL> select dbms_random.string('a',10) from dual; ? ? --all返回不分大小写的字母字符串

? ? DBMS_RANDOM.STRING('A',10) ? ? ?

? ? ?--------------------------------------------------------------------------------

? ? ?eDvKaqNWII

? ? ?SQL> select dbms_random.string('u',10) from dual; ? --upper返回大写字母字符串

? ? ?DBMS_RANDOM.STRING('U',10) ?

? ? ? --------------------------------------------------------------------------------

? ? ? KPGNYTWDGA

? ? ? SQL> ?select dbms_random.string('l',10) from dual; ?--little小写字母

? ? ? DBMS_RANDOM.STRING('L',10)

? ? ? --------------------------------------------------------------------------------

? ? ? zehtdserww

? ? ? SQL> select dbms_random.string('x',10) from dual; ? ---大写字母加数字

? ? ? DBMS_RANDOM.STRING('X',10)

? ? ? --------------------------------------------------------------------------------

? ? ? 3Z7DBA4S8I

? ? ? SQL> select dbms_random.string('p',10) from dual; ?--print 所有可以打印的字符

? ? ? ?DBMS_RANDOM.STRING('P',10)

? ? ? ?--------------------------------------------------------------------------------

? ? ? ?Vj|2~cWM"K


? ? ? ?SQL> select dbms_random.string('p',10) from dual;


? ? ? ?DBMS_RANDOM.STRING('P',10)

? ? ? ?--------------------------------------------------------------------------------

? ? ? ?6_q{eci*uB


  • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:ORACLE中DBMS_RANDOM随机数生成包
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

?2012-2019,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号