`

dbms_random

阅读更多
http://www.blogjava.net/wxqxs/archive/2008/10/24/238967.html
http://blog.csdn.net/pengle/archive/2006/12/27/1464622.aspx


    简单得说,通过dbms_random包调用随机数的方法大致有4种:

1、dbms_random.normal

    这个函数不带参数,能返回normal distribution的一个number类型,所以基本上随机数会在-1到1之间。
    简单测试了一下,产生100000次最大能到5左右:

 declare
   i number:=0;
   j number:=0;
 begin
   for k in 1 .. 100000 loop
   i:= dbms_random.normal;
     if i > j
       then j:=i;
     end if;
   end loop;
   dbms_output.put_line(j);
 end;



    5.15325081797418404136433867107468983182

    PL/SQL procedure successfully completed

2、dbms_random.random

    这个也没有参数,返回一个从-power(2,31)到power(2,31)的整数值

3、dbms_random.value

    这个函数分为两种,一种是没有参数,则直接返回0-1之间的38位小数

    SQL > column value format 9.99999999999999999999999999999999999999
    SQL > select dbms_random.value from dual;

                                        VALUE
    -----------------------------------------
      .58983014999643548701631750396301271752

    第二种是加上两个参数a、b,则返回值在a、b之间的38位小数

    SQL > column value format 999.999999999999999999999999999999999999
    SQL > select dbms_random.value(100,500) value from dual;
                                        VALUE
    -----------------------------------------
     412.150194612502916808701157054098274240

    注意:无论前面几位,小数点之后都是38位

4、dbms_random.string

    这个函数必须带有两个参数,前面的字符指定类型,后面的数值指定位数(最大60)

    类型说明:
    'u','U'  :  upper case alpha characters only
    'l','L'  :  lower case alpha characters only
    'a','A'  :  alpha characters only (mixed case)
    'x','X'  :  any alpha-numeric characters (upper)
    'p','P'  :  any printable characters

    SQL > column value format a30
    SQL > select dbms_random.string('u',30) value from dual;
    VALUE
    ------------------------------
    VTQNLGISELPXEDBXKUZLXKBAJMUTIA

    SQL > select dbms_random.string('l',30) value from dual;
    VALUE
    ------------------------------
    uqygsbquingfqdytpgjvdoblxeglgu

    SQL > select dbms_random.string('a',30) value from dual;
    VALUE
    ------------------------------
    NGTGkQypuSWhBfcrHiOlQwOUXkqJjy

    SQL > select dbms_random.string('x',30) value from dual;
    VALUE
    ------------------------------
    UVWONYJMXT31VEFPD736WJCJ5QT6BD

    SQL > select dbms_random.string('p',30) value from dual;
    VALUE
    ------------------------------
    :mak$(WT4M_7c/+f[_XUscf$P Zcq{

5、关于seed

    可以设置seed来确定随机数的起始点,对于相同的seed而言,随机数的任意一次变化都将是确定的。
    就是说,如果在某一时刻调用了seed,之后第一次产生的随机数是4,第二次是6,第三次是1,那么当你再次调用相同的seed之后,一次产生的随机数还是4、6、1

    seed有两种,一种是数值型的,一种是字符型(最大长度2000)的
    -- Seed with a binary integer
    PROCEDURE seed(val IN BINARY_INTEGER );
    PRAGMA restrict_references (seed, WNDS );

    -- Seed with a string (up to length 2000)
    PROCEDURE seed(val IN VARCHAR2 );
    PRAGMA restrict_references (seed, WNDS );

6、关于initialize

    一个integer参数,注释说的很清楚了:
    -- Obsolete, just calls seed(val)
    PROCEDURE initialize(val IN BINARY_INTEGER );
    PRAGMA restrict_references (initialize, WNDS );
分享到:
评论

相关推荐

    DBMS_RANDOM.VALUE OR DBMS_RANDOM.STRING

    在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...

    Oracle随机函数之dbms_random使用详解

    Oracle的DBMS_RANDOM是一个强大的包,它提供了多种用于生成随机数据的函数,广泛应用于测试、数据分析、模拟等场景。在Oracle数据库中,你可以利用这些函数来创建不可预测的数据,这对于测试应用程序或者填充测试...

    ORACLE随机数DBMS_RANDOM包

    Oracle数据库中的DBMS_RANDOM包是一个非常实用的工具,它提供了生成随机数和随机字符串的功能,广泛应用于各种场景,包括测试、模拟数据生成等。本文将详细介绍DBMS_RANDOM包的四个主要函数及其用法。 1. **dbms_...

    DBMS_SQL的使用

    INSERT INTO demo VALUES (ROUND(DBMS_RANDOM.VALUE, 2) * 100, ROUND(DBMS_RANDOM.VALUE, 2) * 100, ROUND(DBMS_RANDOM.VALUE, 2) * 100); END LOOP; COMMIT; END; ``` 这段代码创建了一个名为`demo`的表,并...

    Oracle里取随机数的几种具体的方法

    在 sys 用户下编译该文件后,DBMS_RANDOM 程序包将被生成,同时生成公有同义词,并授予所有数据库用户执行权限。 使用 DBMS_RANDOM 包可以通过以下步骤生成随机数: 1. 创建一个唯一增长的序列号 tmp_id。 2. 创建...

    Oracle之DBMS_RANDOM包详解

    DBMS_RANDOM是Oracle提供的一个PL/SQL包,用于生成随机数据和字符。它具有以下函数。  其中,initialize,random,terminate函数在Oracle11g中已不推荐使用,主要用于向后兼容。下面对各个函数进行举例说明  1. ...

    Oracle系统包详细使用方法

    dbms_random提供随机数生成功能,常用于测试和模拟。 dbms_logmnr(Log Miner)工具允许分析归档日志,以获取历史数据库活动的详细信息。dbms_flashback提供闪回功能,用于恢复到过去的数据库状态。dbms_...

    Oracle如何实现从特定组合中随机读取值

    在Oracle数据库中,如果你需要从一组特定的值中随机选择一个,可以利用DBMS_RANDOM包提供的函数配合SQL语句来实现。DBMS_RANDOM是Oracle提供的一组实用程序,用于生成随机数,这对于模拟、测试或者在数据库中创建...

    Oracle中如何生成随机数字、随机字符串、随机日期.docx

    如果需要特定范围内的整数,可以进行加减操作,如 `DBMS_RANDOM.RANDOM + 100` 或 `DBMS_RANDOM.RANDOM - 10000`。 3. 随机字符串: Oracle 的 `DBMS_RANDOM.STRING` 函数用于生成随机字符串,其中第一个参数 `OPT`...

    Oracle中如何生成随机数字、随机字符串、随机日期.pdf

    2. 随机整数:`dbms_random.random` 它会返回一个在`-2^31`到`(2^31)-1`之间的随机整数,即在大约-21亿到21亿之间。这个函数没有参数,直接调用即可。 3. 随机字符串:`dbms_random.string(opt, len)` 这个函数...

    Oracle插入随机数

    - `F_Random_ZeroOrOne(DBMS_RANDOM.VALUE())`:调用前面定义的函数`F_Random_ZeroOrOne`生成0或1的随机数。 - `FROM st_pgz_r WHERE pgzid = 2 ORDER BY id;`:从`st_pgz_r`表中选择`pgzid`为2的记录,并按`id`排序...

    oracle中随机数的获取

    除了DBMS_RANDOM.VALUE之外,DBMS_RANDOM包还提供了其他有用的函数。例如,DBMS_RANDOM.RANDOM生成的是一个32位整数,范围从0到4294967295。DBMS_RANDOM.NORMAL可以生成符合正态分布的随机数,这对于模拟统计分布...

    Oracle里抽取随机数的多种方法

    首先,我们可以使用 Oracle 自带的 dbms_random 程序包来生成随机数。dbms_random 是一个 PL/SQL 包,位于 $ORACLE_HOME/rdbms/admin/dbmsrand.sql 目录下。为了使用该包,我们需要先在 sys 用户下编译该文件,即...

    oracle取随机数

    SELECT DBMS_RANDOM.RANDOM FROM DUAL; ``` #### 2. 生成指定范围内的整数 通过组合`MOD`和`ABS`函数,可以生成0至99之间的随机整数。 ```sql SELECT ABS(MOD(DBMS_RANDOM.RANDOM, 100)) FROM DUAL; ``` 如果...

    DM7_System_Packages.pdf

    15. DBMS_RANDOM系统包的使用 16. DBMS_RLS系统包的使用 17. DBMS_SESSION系统包的使用 18. DBMS_SPACE系统包的使用 19. DBMS_SQL系统包的使用 20. DBMS_TRANSACTION系统包的使用 21. DBMS_STATS系统包的使用 ### ...

    Oracle中如何用一条SQL快速生成10万条测试数据.txt

    TRUNC(DBMS_RANDOM.VALUE(0, 100)) AS RANDOM_ID, DBMS_RANDOM.STRING('X', 20) AS RANDOM_STRING FROM DUAL CONNECT BY LEVEL ; ``` 这条SQL语句将创建一个包含四个字段的新表:`ID`、`INC_DATETIME`、`RANDOM_...

    Oracle 8i Supplied PL/SQL Packages Reference

    - **示例**:`DBMS_RANDOM.VALUE`可以生成一个介于0和1之间的随机数。 10. **DBMS_XMLGEN** - **功能**:用于生成XML文档,这是Oracle 8i新增的一项重要特性。 - **示例**:使用`DBMS_XMLGEN.GETXML`可以基于...

    Oracle中如何用一条SQL快速生成10万条测试数据

    trunc(dbms_random.value(0, 100)) AS random_id, dbms_random.string('x', 20) AS random_string FROM dual CONNECT BY LEVEL ; ``` 这条SQL语句创建了一个名为`myTestTable`的新表,并填充了10万条数据,每条...

Global site tag (gtag.js) - Google Analytics