• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ORACLE随机数DBMS_RANDOM包

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

    1、dbms_random.normal

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

    Sql代码

     declare 
      i number:=;  
      j number:=;  
     begin 
      for k in .. 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 and 1之间的38位小数

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

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

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

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

    可以用trunc()函数取整

    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 );

    本文给大家介绍的ORACLE随机数DBMS_RANDOM包,就到此为止了,希望对大家学习oracle随机数有所帮助。

    您可能感兴趣的文章:
    • c# Random快速连续产生相同随机数的解决方案
    • Oracle 随机数
    • javascript Math.random()随机数函数
    • Oracle随机函数之dbms_random使用详解
    • js生成随机数之random函数随机示例
    • Python random模块(获取随机数)常用方法和使用例子
    上一篇:Oracle知识整理笔记
    下一篇:Oracle SQL Developer显示的时间包含时分秒的设置方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ORACLE随机数DBMS_RANDOM包 ORACLE,随机数,DBMS,RANDOM,包,