使用sys guid產生隨機數

2021-06-09 12:58:22 字數 1017 閱讀 3112

今天同事需要建立乙個由36位的隨機數字,中間用一些『-』分割。沒有什麼好的方法,於是就問我。我也想了想,如何是最簡潔最快速呢?好像oracle沒有乙個這樣可以產生指定位數的純數字的函式。   想到了sys_guid()函式,專門用來產生32位的隨機數,不過中間包括一些大寫的英文本母。於是就想使用這個函式加上translate函式來轉譯一些英文本母。   下面來看一下這個自定義的函式:create or replace function fun_createrandom return varchar2 is

result varchar2(32);

kk varchar2(64);

begin

select translate(sys_guid(),'abcdefghijklmnopquvwxyzrst','01234567890123456789012345') into result from dual;

select substr(result,1,8)||'-'||substr(result,9,4)||'-'||substr(result,13,4)||'-'||substr(result,17,4)||'-'||substr(result,20,12) into kk from dual;

return(kk);

end fun_createrandom;

sql> select fun_createrandom from dual;

fun_createrandom

03525205-5112-4224-9870-055638840111

sql> select fun_createrandom from dual;

fun_createrandom

62235313-4235-4831-0357-751601449968

sql> select fun_createrandom from dual;

fun_createrandom

72604958-5786-4943-9212-255000333009

sql> spool off;

產生隨機數

先說明一下rand,這個函式用來產生偽隨機數。比如,產生1000的兩個隨機數,產生的兩個一般上是不同的,但如果要產生80個100以內的隨機數,僅用rand函式就不夠。因為產生80個100以內的隨機數,至少有兩個數相等的概率太大了 srand函式,並不能使產生的隨機數完全不同。你可以執行以下這串 in...

隨機數產生

c c 中取隨機數 在計算機中並沒有乙個真正的隨機數發生器,但是可以做到使產生的數字重複率很低,這樣看起來好象是真正的隨機數,實現這一功能的程式叫偽隨機數發生器。有關如何產生隨機數的理論有許多,如果要詳細地討論,需要厚厚的一本書的篇幅。不管用什麼方法實現隨機數發生器,都必須給它提供乙個名為 種子 的...

產生隨機數

一 normrnd r normrnd mu,sigma r normrnd mu,sigma,m,n,r normrnd mu,sigma,m,n,mu sigma可以是向量或矩陣 二者同為矩陣時size要相同 但必須和r的size相同 行 列 r的size可以不指定,也可以用m,n指定 n1 n...