Oracle dbms_random随机数包详解
Oracle dbms_random包主要用于获得随机数,可以为数字也可以为字母等,还可以实现混拼。常用函数如下:
dbms_random.value
生成一个指定范围的38位随机小数(小数点后38位),若不指定范围则默认为范围为[0,1)的随机数。
Oracle的官方说明为:The VALUE function produces numbers in the range [0,1) with 38 digits of precision.
【举例】
生成一个0~1间的随机小数(包括0,不包括1):
select dbms_random.value from dual;
返回:0.800625…
生成一个1~10间的随机小数(包括1和不包括10):
select dbms_random.value(1,10) from dual;
返回:8.5929…
dbms_random.normal
生成一个符合正态分布的随机数,此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间, 95%介于-2与+2之间,99%介于-3与+3之间。
【举例】
select dbms_random.normal from dual;
返回:1.0748…
dbms_random.random
生成一个从-power(2,31)到power(2,31)的整数值,注意,区间为左闭右开。
官方说明为:The RANDOM function produces integers in the range [-2^^31, 2^^31).
【举例】
select dbms_random.random from dual;
返回:2018005364
随机从emp表中获取3条记录
select * from (select * from scott.emp order by dbms_random.random) where rownum < 4;
dbms_random.string
生成一个指定模式指定位数的随机字符串,可选模式如下:
'u'或'U',仅返回大写字母
'l'或'L',仅返回小写字母
'a'或'A',返回大小写字母混合
'x'或'X',返回大写字母和数字混合
'p'或'P',返回任意可显示字符
【举例】
select dbms_random.string('u',10) from dual;
返回:MYYUYFQQHS
select dbms_random.string('L',10) from dual;
返回:vuzscusike
select dbms_random.string('a',10) from dual;
返回:oZoGNKAERk
select dbms_random.string('X',10) from dual;
返回:RC6IZ10FVT
select dbms_random.string('X',10) from dual;
返回:A1E-=S)w%1
dbms_random.seed:
生成一个指定起始点的随机数,对于相同的seed而言,随机数任意一次变化都是确定的。
在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数,其中常用的有以下两个:
DBMS_RANDOM.VALUE函数
该函数用来产生一个随机数,有两种用法:
1. 产生一个介于0和1之间(不包含0和1)的38位精度的随机数,语法为:
DBMS_RANDOM.VALUE RETURN NUMBER; |
这种用法不包含参数。
2. 产生一个介于指定范围之内的38位精度的随机数,语法为:
DBMS_RANDOM.VALUE(low IN NUMBER,high IN NUMBER) RETURN NUMBER; |
这种用法包含两参数,参数low用来指定要生成的随机数的下限,参数high指定上限,生成的随机。请注意生成的随机数有可能等于下限,但绝对小于上限,即“low<=随机数<high”。
举个例子: 要产生一个1到100之间的数可以这样写: DBMS_RANDOM.VALUE(1,100)
DBMS_RANDOM.STRING函数
该函数产生一个随机字符串,语法为:
DBMS_RANDOM.STRING (opt IN CHAR,len IN NUMBER) RETURN VARCHAR2; |
参数len指定生成的字符串的长度。
参数opt指定生成的字符串的样式,允许的取值及其表示的含义如下表所示:
取值 |
含义 |
‘u’或’U’ |
返回一个由大写字母组成的字符串 |
‘l’或’L’ |
返回一个由小写字母组成的字符串 |
‘a’或’A’ |
返回一个由大写字母和小写字母组成的字符串 |
‘x’或’X’ |
返回一个由大写字母和数字组成的字符串 |
‘p’或’P’ |
返回一个由任意的可打印字符组成的字符串 |
举个例子: 要产生一个长度为6且只包括大写字母的字符串,可以这样写: DBMS_RANDOM.STRING('U',6)
附转:“伪随机数”和“随机种子”
首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。
所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似 的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言, 其随机程度已足够了。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子 一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子。
Oracle dbms_random随机数包详解的更多相关文章
- ORACLE之UTL_FILE包详解
1 Utl_File包简介Oracle的UTL_FILE包用来实现对磁盘文件的I/O操作.(1)Oracle10g之前的版本需要指定utl_file包可以操作的目录. 方法: ...
- Oracle中dbms_random包详解
Oracle之DBMS_RANDOM包详解参考自:https://www.cnblogs.com/ivictor/p/4476031.html https://www.cnblogs.com/shen ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
- oracle中imp命令详解 .
转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- 常见 jar包详解
常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...
- 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航
原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...
- [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)
原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下 ...
- [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)
原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日 ...
随机推荐
- Matlab变量、分支语句和循环语句
一.Matlab的变量 1.变量的命名 Matlab的变量名由数字.字母和下划线组成,可是仅仅能由字母开头.大写和小写敏感,最大长度为63个字符.不能使用Matlab的关键字作为变量名,应当避免使用函 ...
- 娓娓道来c指针 (4)解析c的声明语句
(4)解析c的声明语句 在继续探索c指针之前.有必要来解析下c语言中复杂的声明语法. 仅仅须要记住两则:一个原则,一个规则. 原则:先看标示符. 规则:运算符优先级是规则. 举例说明 1.最简单的 i ...
- JVM是怎么工作的?
了解JVM的工作机制能够更好的帮助我们理解java语言本身,规避各种可能的错误.所以,今天趁此机会好好复习一下.来看看JVM是怎么工作的. 一.啥是JVM JVM可以理解为用来运行java程序的一种运 ...
- session 防止表单重复提交
防止表单重复提交应该现在前台做一遍,再在后台做一遍.这样双重安全而且减轻服务器负担. 代码: package flying.form; import java.io.IOException; impo ...
- 移动通信安全——GSM安全体系
一.GSM网络概述 1.安全机制 认证用户,防止未授权接入 对空中接口传输加密,防止无线信道上用户信息被窃听 SIM卡独立于终端,管理用户信息 在空中接口上以临时身份标识用户,防止用户被跟踪 但是GS ...
- 《开源框架那点事儿23》:採用TinyDB组件方式开发
採用TinyDB组件方式开发 步骤 Icon 前文介绍四则运算的流程编程开发时,说过流程编排在开发反复功能时.能够利用已有的组件库高速开发.对于开发者而言仅仅须要简单配置流程就能够完毕工作了.开发增删 ...
- ORID方法在敏捷中的利用
Objective: 上个迭代有哪些让你印象深刻的事情发生?你看到了什么? Reflective:哪些场景让你兴奋?哪些地方不那么顺利? Interpretive:为什么会不顺利?这些数据使你意识到了 ...
- Mybatis 中延时加载
1 为了处理N+1 问题,Mybatis 引入了延时加载功能,意义是一开始并不取出关联数据,只有当使用时,才发送sql语句去取. mybatis中两个全局设置 lazyLoadingEnabled 和 ...
- Windows下搭建HTK
转自:http://blog.csdn.net/yanli0823/article/details/8186382 亲测有效,环境: windows 8.1 perl版本: HTK版本:Hidden ...
- LDA与QDA
作者:桂. 时间:2017-05-23 06:37:31 链接:http://www.cnblogs.com/xingshansi/p/6892317.html 前言 仍然是python库函数sci ...