Oracle中生成隨機數的函式

2021-09-07 03:45:51 字數 1341 閱讀 1869

在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<=隨機數。

舉個例子: 要產生乙個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)

附**「偽隨機數」和「隨機種子」

首先需要宣告的是,計算機不會產生絕對隨機的隨機數,計算機只能產生「偽隨機數」。其實絕對隨機的隨機數只是一種理想的隨機數,即使計算機怎樣發展,它也不會產生一串絕對隨機的隨機數。計算機只能生成相對的隨機數,即偽隨機數。

所謂的隨機數發生器都是通過一定的演算法對事先選定的隨機種子做複雜的運算,用產生的結果來近似 的模擬完全隨機數,這種隨機數被稱作偽隨機數。偽隨機數是以相同的概率從一組有限的數字中選取的。所選數字並不具有完全的隨機性,但是從實用的角度而言, 其隨機程度已足夠了。偽隨機數的選擇是從隨機種子開始的,所以為了保證每次得到的偽隨機數都足夠地「隨機」,隨機種子的選擇就顯得非常重要。如果隨機種子 一樣,那麼同乙個隨機數發生器產生的隨機數也會一樣。一般地,我們使用同系統時間有關的引數作為隨機種子。

ios 中生成隨機數

ios 有如下三種隨機數方法 1.srand unsigned time 0 不加這句每次產生的隨機數不變 int i rand 5 2.srandom time 0 int i random 5 3.int i arc4random 5 注 rand 和random 實際並不是乙個真正的偽隨機數發...

ios 中生成隨機數

ios 有如下三種隨機數方法 1.srand unsigned time 0 不加這句每次產生的隨機數不變 int i rand 5 2.srandom time 0 int i random 5 3.int i arc4random 5 注 rand 和random 實際並不是乙個真正的偽隨機數發...

ios 中生成隨機數

原文 ios 有如下三種隨機數方法 1.srand unsigned time 0 不加這句每次產生的隨機數不變 int i rand 5 2.srandom time 0 int i random 5 3.int i arc4random 5 注 rand 和random 實際並不是乙個真正的偽隨...