- 浏览: 458105 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
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左右:
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 );
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 );
发表评论
-
数据库的一些概念
2012-10-30 13:12 677Web里面,数据库占了半壁江山, 本着PC有价数据无价,DBA ... -
SQLite
2011-11-17 16:52 672官方主页:http://www.sqlit ... -
一些表的概念
2011-09-13 09:59 465平行表 预处理表 流水表 记账表 -
Oracle__View
2011-08-11 10:03 544http://database.51cto.com/art/2 ... -
Oracle__跨库映射
2011-02-23 11:42 524http://blog.csdn.net/huzhenwei/ ... -
Oracle__运行中的SQL
2011-02-16 17:05 575运行中的SQL Select a.program,b.sp ... -
Oracle__数据字典__表结构
2011-02-11 10:02 980SQL> desc all_tab_columns ... -
Oracle__约束
2011-01-17 13:13 500约束查询: Select constraint_name ... -
Oracle__大表__索引__查询
2011-01-14 09:37 621http://hi.baidu.com/ak456/blog/ ... -
Oracle__undo__redo
2011-01-14 09:34 784http://space.itpub.net/8750110/ ... -
Oracle__序列Sequence
2011-01-11 16:50 673http://database.51cto.com/art/2 ... -
Oracle__系统信息
2011-01-04 11:53 522版本 Select * From v$Version; S ... -
Oracle__进程
2011-01-04 10:33 426Select a.username, a.machine, ... -
Oracle__日志
2010-09-02 17:19 749Oracle日志基本信息 http://zhidao.baid ... -
spool
2010-08-06 12:03 743set linesize 1000; set pag ... -
Oracle逻辑结构相关数据字典
2010-08-05 14:48 770http://space.itpub.net/1440192 ... -
Nvl( ) 函数
2010-08-05 11:05 659http://blog.chinaunix.net/u/2 ... -
InstantClient安装使用
2010-08-02 10:54 3221http://wudx.iteye.com/blog/4225 ... -
Oracle那些函数
2010-07-29 11:36 559mod左%右,求余abs绝对值upper转换为大字nvl替 ... -
Oracle Trunc Round
2010-06-22 11:54 924原文地址: http://hepu.ite ...
相关推荐
在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...
Oracle的DBMS_RANDOM是一个强大的包,它提供了多种用于生成随机数据的函数,广泛应用于测试、数据分析、模拟等场景。在Oracle数据库中,你可以利用这些函数来创建不可预测的数据,这对于测试应用程序或者填充测试...
Oracle数据库中的DBMS_RANDOM包是一个非常实用的工具,它提供了生成随机数和随机字符串的功能,广泛应用于各种场景,包括测试、模拟数据生成等。本文将详细介绍DBMS_RANDOM包的四个主要函数及其用法。 1. **dbms_...
在 sys 用户下编译该文件后,DBMS_RANDOM 程序包将被生成,同时生成公有同义词,并授予所有数据库用户执行权限。 使用 DBMS_RANDOM 包可以通过以下步骤生成随机数: 1. 创建一个唯一增长的序列号 tmp_id。 2. 创建...
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`的表,并...
DBMS_RANDOM是Oracle提供的一个PL/SQL包,用于生成随机数据和字符。它具有以下函数。 其中,initialize,random,terminate函数在Oracle11g中已不推荐使用,主要用于向后兼容。下面对各个函数进行举例说明 1. ...
dbms_random提供随机数生成功能,常用于测试和模拟。 dbms_logmnr(Log Miner)工具允许分析归档日志,以获取历史数据库活动的详细信息。dbms_flashback提供闪回功能,用于恢复到过去的数据库状态。dbms_...
在Oracle数据库中,如果你需要从一组特定的值中随机选择一个,可以利用DBMS_RANDOM包提供的函数配合SQL语句来实现。DBMS_RANDOM是Oracle提供的一组实用程序,用于生成随机数,这对于模拟、测试或者在数据库中创建...
如果需要特定范围内的整数,可以进行加减操作,如 `DBMS_RANDOM.RANDOM + 100` 或 `DBMS_RANDOM.RANDOM - 10000`。 3. 随机字符串: Oracle 的 `DBMS_RANDOM.STRING` 函数用于生成随机字符串,其中第一个参数 `OPT`...
2. 随机整数:`dbms_random.random` 它会返回一个在`-2^31`到`(2^31)-1`之间的随机整数,即在大约-21亿到21亿之间。这个函数没有参数,直接调用即可。 3. 随机字符串:`dbms_random.string(opt, len)` 这个函数...
- `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`排序...
除了DBMS_RANDOM.VALUE之外,DBMS_RANDOM包还提供了其他有用的函数。例如,DBMS_RANDOM.RANDOM生成的是一个32位整数,范围从0到4294967295。DBMS_RANDOM.NORMAL可以生成符合正态分布的随机数,这对于模拟统计分布...
首先,我们可以使用 Oracle 自带的 dbms_random 程序包来生成随机数。dbms_random 是一个 PL/SQL 包,位于 $ORACLE_HOME/rdbms/admin/dbmsrand.sql 目录下。为了使用该包,我们需要先在 sys 用户下编译该文件,即...
SELECT DBMS_RANDOM.RANDOM FROM DUAL; ``` #### 2. 生成指定范围内的整数 通过组合`MOD`和`ABS`函数,可以生成0至99之间的随机整数。 ```sql SELECT ABS(MOD(DBMS_RANDOM.RANDOM, 100)) FROM DUAL; ``` 如果...
15. DBMS_RANDOM系统包的使用 16. DBMS_RLS系统包的使用 17. DBMS_SESSION系统包的使用 18. DBMS_SPACE系统包的使用 19. DBMS_SQL系统包的使用 20. DBMS_TRANSACTION系统包的使用 21. DBMS_STATS系统包的使用 ### ...
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_...
- **示例**:`DBMS_RANDOM.VALUE`可以生成一个介于0和1之间的随机数。 10. **DBMS_XMLGEN** - **功能**:用于生成XML文档,这是Oracle 8i新增的一项重要特性。 - **示例**:使用`DBMS_XMLGEN.GETXML`可以基于...
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万条数据,每条...