標籤:style blog http color 使用 strong 2014 ar
在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指定產生的字串的樣式,允許的取值及其表示的含義如下表所示:
舉個例子: 要產生一個長度為6且只包括大寫字母的字串,可以這樣寫: DBMS_RANDOM.STRING(‘U‘,6)
附轉:“偽隨機數”和“隨機種子”
首先需要聲明的是,電腦不會產生絕對隨機的隨機數,電腦只能產生“偽隨機數”。其實絕對隨機的隨機數只是一種理想的隨機數,即使電腦怎樣發展,它也不會產生一串絕對隨機的隨機數。電腦只能產生相對的隨機數,即偽隨機數。
所謂的隨機數發生器都是通過一定的演算法對事先選定的隨機種子做複雜的運算,用產生的結果來近似 的類比完全隨機數,這種隨機數被稱作偽隨機數。偽隨機數是以相同的機率從一組有限的數字中選取的。所選數字並不具有完全的隨機性,但是從實用的角度而言, 其隨機程度已足夠了。偽隨機數的選擇是從隨機種子開始的,所以為了保證每次得到的偽隨機數都足夠地“隨機”,隨機種子的選擇就顯得非常重要。如果隨機種子 一樣,那麼同一個隨機數發生器產生的隨機數也會一樣。一般地,我們使用同系統時間有關的參數作為隨機種子。
轉載自:http://www.cnblogs.com/lgzslf/archive/2008/11/29/1343685.html