-
需要 DBMS 隨機
Oracle 的 PL SQL 提供隨機數和隨機字串的生成。
列表如下:
1. 十進位 (0 1)。
select dbms_ from dual;
2. 小數 (0 100) 在指定範圍內
select dbms_,100) from dual;
3. 指定範圍內的整數 (0 100)
select trunc(dbms_,100)) from dual;
4. 一串長度為 20 的隨機數。
select substr(cast(dbms_ as varchar2(38)),3,20) from dual;
5.正態分佈的隨機數。
select dbms_ from dual;
6.隨機字串。
select dbms_, length) from dual;
OPT 的可能值如下:
u','u':大寫字母。
l','l':乙。
a','a':大寫和小寫字母。
x','x':數字,大寫字母。
p','p':可列印字元。
7. 隨機日期。
select to_date(2454084+trunc(dbms_,365)),'j') from dual
使用以下語句獲取指定日期的基數。
select to_char(sysdate,'j') from dual;
8. 生成 GUID
select sys_guid() from dual;
-
1、dbms_
這個函式沒有引數,返回乙個正態分佈的數字型別,所以基本上隨機數將在 -1 和 1 之間。
2、dbms_
這個也沒有引數,並返回乙個從 -power(2,31) 到 power(2,31) 的整數值。
3、dbms_
這個函式有兩種型別,一種是沒有引數,它直接返回 0-1 之間的 38 位小數。
4、dbms_
此函式必須有兩個引數,第乙個字元指定型別,以下值指定位數(最多 60 位)。
-
值函式的第一種形式返回乙個大於或等於 0 且小於 1 的隨機數; 第二種形式返回乙個大於或等於低和小於高的隨機數。 下面是如何使用它的示例:
sql> select dbms_, dbms_,18) from dual;
value dbms_,18)
-
DBMS Random 包提供內建的隨機數生成器。
在預言機中,選擇種子的過程稱為初始化,在執行隨機函式之前,不能顯式執行初始化,預言機會自動使用日期、使用者 ID 和程序 ID 進行初始化。 當然,也可以顯式初始化或稱為自定義初始化。
val 引數表示種子編號。
字串長度可達 2000
隨機函式的返回值可以在 [ -231231 範圍內,所以如果我們想得到 [-1,1] 範圍內的偽隨機結果:
如果為 [0,1],則取絕對值。
如果你想考慮 [m,n] (m[m,n] (m在隨機函式的例子中,我們已經討論了區間 [0,1] 和區間 [m,n](m,當沒有引數時,它在 [0,1] 上返回乙個隨機數。
low 引數表示最小值,high 引數表示最大值,在 [low,high] 區間內返回隨機數量的掩碼。
opt引數控制字串的大小寫格式,可選值和含義如下:
u'or'u':表示大寫字母。
l' 或 'l':表示小寫字母。
a' 或 'a':表示大小寫和大小寫的混合。
x' 或 'x':表示大寫字母和數字的組合。
p' 或 'p':表示任何可顯示的字元。
len 表示字串的長度。
-
在 Oracle 的 DBMS Random 包中,有很多函式可以生成隨機數和隨機字串,常用的有以下兩種。
DBMS隨機值函式。
此函式用於以兩種方式生成隨機數。
在 和 (不帶 和 )之間生成乙個位精度隨機數,語法為 。
dbms_random value return number;此用法不包含引數。
產生乙個隨機數在指定範圍內的尖峰模仿銀的精度語法是。
dbms_random value(low in number high in number) return number;這種用法由兩個引數組成:引數 low 用於指定要生成的隨機數的下限,引數 high 用於指定要生成的隨機數的上限,生成的隨機數可能等於下限,但肯定小於上限, 即“低< = 隨機數。
例如,要在 to 之間生成乙個數字,可以這樣寫成:dbms random value( )。
DBMS 隨機字串函式。
該函式生成乙個語法為 的隨機字串。
dbms_random string (opt in char len in number) return varchar ;len 引數指定生成的字串的長度。
下表描述了 opt 引數中指定的生成字串的允許值和含義。
有效值 含義為“u”或“u” 返回一串大寫字母“l”或“l” 返回一串小寫字母“a”或“a” 返回一串大寫和小寫字母“x”或“x” 返回由大寫字母和數字組成的字串 “p”或“p” 返回任意可列印字元字串 lishixinzhi article program oracle 201311 19036
由於問題中沒有解釋 20 個數字的特徵,我們先將其設定為 100 以內的正整數,計算答案的語句沒有具體說明它是什麼型別的運算,而是設定為求和。 >>>More
script ramm=random(2);
script if ramm==1 then usecontaineritem(0, 1);else usecontaineritem(0, 2);end >>>More