在oracle 中生成隨機數

pingley發表於2012-05-06
在oracle 中生成隨機數
有時候我們需要使用到隨機數,可以使用dbms_random 來產生各種各樣的隨機數。
1、初始化隨機數引數的種子。
如果不指定隨機數引數的種子,oracle將會使用當前時間,使用者id,程式id號來生成種子。如果指定的種子相同將會生成相同的隨機數(隨機數是種子透過複雜的運算得到的,並不是真正的隨機)。
SQL>  begin
  2   dbms_random.seed(1234);
  3   end;
  4   /
PL/SQL procedure successfully completed.
SQL> select dbms_random.string('p',5) from dual;
DBMS_RANDOM.STRING('P',5)
-----------------------------------------------------------------
H 1AJ
SQL> begin
  2  dbms_random.seed(1234);
  3  end;
  4  /
PL/SQL procedure successfully completed.
SQL> select dbms_random.string('p',5) from dual;
DBMS_RANDOM.STRING('P',5)
-----------------------------------------------------------------
H 1AJ
2、使用dbms_random.random產生一個範圍在[-2^32,2^31)之間的隨機數。
SQL> select dbms_random.random from dual;
    RANDOM
----------
 620661990
SQL> select dbms_random.random from dual;
    RANDOM
----------
 606573780
3、使用bms_random.value 產生一個範圍在[0,1)之間精度為38位的隨機數。或者生成指定範圍之內的隨機數。
SQL> select dbms_random.value from dual;
     VALUE
----------
.886022585
SQL> select dbms_random.value from dual;
     VALUE
----------
 .57996367
透過使用 dbms_random.value(x,y),產生範圍在[x,y)之間的隨機數。
SQL> select dbms_random.value(100,200) from dual;
DBMS_RANDOM.VALUE(100,200)
--------------------------
                110.185899
SQL> select dbms_random.value(100,200) from dual;
DBMS_RANDOM.VALUE(100,200)
--------------------------
                 128.20002
3、使用 dbms_random.string(opt,len) 生成opt 型別len 長度的隨機字串。
opt 引數有:
'u', 'U'表示大寫字母字串。
'l', 'L' 表示小寫字母字串。
'a', 'A' 表示大小寫混合的字串。
'x', 'X' 表示大寫的數值字母字串串。
'p', 'P' 表示任何的可列印字元。
SQL> select dbms_random.string('U',6) from dual;
DBMS_RANDOM.STRING('U',6)
-------------------------------------------------
YTWFUB
SQL> select dbms_random.string('U',6) from dual;
DBMS_RANDOM.STRING('U',6)
-------------------------------------------------
VOJIRA
SQL> select dbms_random.string('x',5) from dual;
DBMS_RANDOM.STRING('X',5)
-------------------------------------------------
UBEGV
SQL> select dbms_random.string('x',5) from dual;
DBMS_RANDOM.STRING('X',5)
-------------------------------------------------
D4T7J

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-722828/,如需轉載,請註明出處,否則將追究法律責任。

相關文章