127 DBMS_RANDOM
DBMS_RANDOM
パッケージは、組込み式の乱数ジェネレータを提供します。DBMS_RANDOM
は暗号化に使用するものではありません。
この章のトピックは、次のとおりです:
127.1 DBMS_RANDOMの推奨されないサブプログラム
Oracle Database 11gでは、次のサブプログラムの使用は推奨されていません。新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
127.2 DBMS_RANDOMのセキュリティ・モデル
このパッケージは、SYS
としてインストールする必要があります。デフォルトでは、このパッケージは、現行のユーザー名、秒数まで示した現在の時間および現行セッションで初期化されます。このパッケージを実行する必要があるユーザーには、明示的にEXECUTE
権限を付与し、PUBLIC EXECUTE
権限に依存しないことをお薦めします。
127.3 DBMS_RANDOMの操作上のノート
DBMS_RANDOMには、次の操作上のノートが適用されます。
-
DBMS_RANDOM.RANDOM
は、[-2^^31, 2^^31)の整数を生成します。 -
DBMS_RANDOM.VALUE
は[0,1)の数を生成し、精度は38桁です。
DBMS_RANDOM
は明示的に初期化できますが、乱数ジェネレータをコールする前に初期化する必要はありません。明示的な初期化が行われない場合は、日付、ユーザーIDおよびプロセスIDで自動的に初期化されます。
このパッケージを、同じシードを使用して2回シードしてから同じ方法でアクセスした場合、2回とも同じ結果が生成されます。
テストなどのように、すべての実行で乱数の順序が同じになる必要のある場合があります。その場合は、DBMS_RANDOM.SEED
のオーバーロードの1つをコールして、ジェネレータを定数値でシードします。各実行時の出力を変える場合は、単にシードのコールを省略して、システムによって適切なシードが選択されるようにします。
127.4 DBMS_RANDOMサブプログラムの要約
この表は、DBMS_RANDOM
サブプログラムを示し、簡単に説明しています。
表127-1 DBMS_RANDOMパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
シード値を使用して、パッケージを初期化します。 |
|
正規分布の乱数を戻します。 |
|
乱数を生成します。 |
|
シードをリセットします |
|
ランダム文字列を取得します。 |
|
パッケージを終了します |
|
0以上1未満で小数点以下38桁(精度38桁)の乱数を取得します。このファンクションがオーバーロードされると、ランダムなOracleの数値xを取得します。このxは |
127.4.1 INITIALIZEプロシージャ
この非推奨のプロシージャはジェネレータを初期化します。
ノート:
リリース11gR1では、このプロシージャの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。
構文
DBMS_RANDOM.INITIALIZE ( val IN BINARY_INTEGER);
プラグマ
PRAGMA restrict_references (initialize, WNDS);
パラメータ
表127-2 INITIALIZEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
乱数の生成に使用するシード番号。 |
使用上のノート
このプロシージャはSEEDプロシージャのコールのみを行うもので、今後サポートされません。
127.4.2 NORMALファンクション
このファンクションは、標準正規分布の乱数を戻します。
構文
DBMS_RANDOM.NORMAL RETURN NUMBER;
プラグマ
PRAGMA restrict_references (normal, WNDS);
戻り値
表127-3 NORMALファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
乱数を戻します。 |
127.4.3 RANDOMファンクション
この推奨されないプロシージャは乱数を生成します。
ノート:
リリース11gR1では、このファンクションの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。
構文
DBMS_RANDOM.RANDOM RETURN binary_integer;
プラグマ
PRAGMA restrict_references (random, WNDS);
戻り値
127-4 RANDOMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
-2の31乗以上2の31乗未満の整数の乱数を戻します。 |
127.4.4 SEEDプロシージャ
このプロシージャは、シードをリセットします。
構文
DBMS_RANDOM.SEED ( val IN BINARY_INTEGER); DBMS_RANDOM.SEED ( val IN VARCHAR2);
プラグマ
PRAGMA restrict_references (seed, WNDS);
パラメータ
表127-5 SEEDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
乱数の生成に使用するシード番号または文字列。 |
使用上のノート
シードには2000までの長さの文字列を使用できます。
127.4.5 STRINGファンクション
このファンクションは、ランダム文字列を取得します。
構文
DBMS_RANDOM.STRING opt IN CHAR, len IN NUMBER) RETURN VARCHAR2;
プラグマ
PRAGMA restrict_references (string, WNDS);
パラメータ
表127-6 STRINGファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
戻される文字列の表示方法を指定します。
これ以外の場合、戻される文字列は大文字のアルファベット文字になります。 |
|
戻される文字列の長さ。 |
戻り値
表127-7 STRINGファンクションの戻り値
パラメータ | 説明 |
---|---|
|
|
127.4.6 TERMINATEプロシージャ
パッケージを終了するときは、TERMINATE
プロシージャをコールします。
ノート:
リリース11gR1では、このプロシージャの使用は推奨されていません。現在はサポートされていますが、使用しないことをお薦めします。
構文
DBMS_RANDOM.TERMINATE;
127.4.7 VALUEファンクション
基本のファンクションによって、0以上1未満で、小数点以下が38桁(精度38桁)の乱数が取得されます。あるいは、ランダムなOracleの数値xを取得できます(このxはlow
以上high
未満です)。
構文
DBMS_RANDOM.VALUE RETURN NUMBER; DBMS_RANDOM.VALUE( low IN NUMBER, high IN NUMBER) RETURN NUMBER;
パラメータ
表127-8 VALUEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
乱数を生成する範囲の最小値(この値を含む)。生成される数値は |
|
乱数を生成する範囲の最大値(この値を含まない)。生成される数値は |
戻り値
127-9 VALUEファンクションの戻り値
パラメータ | 説明 |
---|---|
|
Oracleの数値を戻します。 |