6 DBMS_RANDOM
DBMS_RANDOMパッケージは、組込み式の乱数ジェネレータを提供します。
この章の内容は次のとおりです。
-
-
操作上のノート
-
ノート:
DBMS_RANDOMは暗号化に使用するものではありません。
DBMS_RANDOMの使用
操作上のノート
-
RANDOMファンクションは、[-2^^31, 2^^31)の範囲の整数を生成します。 -
VALUEファンクションは[0,1)の範囲の数を生成し、精度は38桁です。
DBMS_RANDOMは明示的に初期化できますが、乱数ジェネレータをコールする前に初期化する必要はありません。明示的な初期化が行われない場合は、日付、ユーザーIDおよびプロセスIDで自動的に初期化されます。
このパッケージを、同じシードを使用して2回シードしてから同じ方法でアクセスした場合、2回とも同じ結果が生成されます。
テストなどのように、すべての実行で乱数のシーケンスが同じになる必要のある場合があります。その場合は、SEEDのオーバーロードをコールして、ジェネレータを一定の値でシードします。各実行時の出力を変える場合は、単にシードのコールを省略します。これにより、システムによって適切なシードが選択されます。
DBMS_RANDOMのサブプログラム
表6-1に、DBMS_RANDOMのサブプログラムの概要と各サブプログラムの詳細な説明を示します。
表6-1 DBMS_RANDOMパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
シード値を使用して、パッケージを初期化します。 |
|
|
正規分布の乱数を戻します。 |
|
|
乱数を生成します。 |
|
|
シードをリセットします。 |
|
|
ランダム文字列を取得します。 |
|
|
パッケージを終了します。 |
|
|
あるバージョンは、0以上1未満で小数点以下38桁(精度38桁)の乱数を取得します。他のバージョンでは、ランダムなOracle Databaseの数値 |
ノート:
-
INITIALIZEプロシージャ、RANDOMファンクションおよびTERMINATEプロシージャは非推奨になりました。今回のリリースに含まれているのは、下位互換性を保つという理由にすぎません。
-
PLS_INTEGERデータ・タイプとBINARY_INTEGERデータ・タイプは同じです。このドキュメントでは、リファレンス情報でデータ・タイプ(表タイプ、レコード・タイプ、サブプログラム・パラメータ、サブプログラム戻り値など)を示す場合にBINARY_INTEGERを使用しますが、説明および例ではいずれも使用される場合があります。 -
INTEGERデータ・タイプとNUMBER(38)データ・タイプも同じです。このドキュメントでは、全体をとおしてINTEGERを使用します。
INITIALIZEプロシージャ
このプロシージャの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。これは乱数ジェネレータを初期化します。
構文
DBMS_RANDOM.INITIALIZE (
val IN BINARY_INTEGER);パラメータ
表6-2 INITIALIZEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
乱数の生成に使用するシード番号。 |
使用上のノート
このプロシージャはSEEDプロシージャのコールのみを行うもので、今後サポートされません。
RANDOMファンクション
このプロシージャの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。これは乱数を生成して戻します。
構文
DBMS_RANDOM.RANDOM
RETURN binary_integer;戻り値
-power(2,31)以上power(2,31)未満のランダムBINARY_INTEGER値
使用上のノート
NORMALファンクションおよびVALUEファンクションを参照してください。
SEEDプロシージャ
このプロシージャは、乱数の生成に使用されるシードをリセットします。
構文
DBMS_RANDOM.SEED (
val IN BINARY_INTEGER);
DBMS_RANDOM.SEED (
val IN VARCHAR2);パラメータ
表6-3 SEEDプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
乱数の生成に使用するシード番号または文字列。 |
使用上のノート
シードには2000までの長さの文字列を使用できます。
STRINGファンクション
このファンクションは、ランダムな文字列を生成して戻します。
構文
DBMS_RANDOM.STRING
opt IN CHAR,
len IN NUMBER)
RETURN VARCHAR2;パラメータ
表6-4 STRINGファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
戻される文字列の表示方法の指定
これ以外の場合、戻される文字列は大文字のアルファベット文字になります。 |
|
|
戻される文字列の長さ |
戻り値
ランダムな文字列を持つVARCHAR2値
TERMINATEプロシージャ
このプロシージャの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。これは、ユーザーがパッケージを終了するとコールされます。
構文
DBMS_RANDOM.TERMINATE;VALUEファンクション
NUMBER値xを返しますが、このxは指定したlow値以上および指定したhigh値未満です。
構文
DBMS_RANDOM.VALUE
RETURN NUMBER;
DBMS_RANDOM.VALUE(
low IN NUMBER,
high IN NUMBER)
RETURN NUMBER;パラメータ
表6-5 VALUEファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
乱数を生成する範囲の下限 |
|
|
乱数を生成する範囲の上限 |
戻り値
生成された乱数であるNUMBER値