DBMS_RANDOM
パッケージは、組込み式の乱数ジェネレータを提供します。 DBMS_RANDOM
は暗号化に使用するものではありません。
この章では、次の項目について説明します。
セキュリティ・モデル
使用上の注意
このパッケージは、SYS
としてインストールする必要があります。デフォルトでは、このパッケージは、現行のユーザー名、秒数まで示した現在の時間および現行セッションで初期化されます。
DBMS_RANDOM.RANDOM
は、[-2^^31, 2^^31)の整数を生成します。
DBMS_RANDOM.VALUE
は[0,1)の数を生成し、精度は38桁です。
DBMS_RANDOMは明示的に初期化できますが、乱数ジェネレータをコールする前に初期化する必要はありません。明示的な初期化が行われない場合は、日付、ユーザーIDおよびプロセスIDで自動的に初期化されます。
このパッケージを、同じシードを使用して2回シードしてから同じ方法でアクセスした場合、2回とも同じ結果が生成されます。
テストなどのように、すべての実行で乱数のシーケンスが同じになる必要のある場合があります。 その場合は、DBMS_RANDOM.SEED
のオーバーロードの1つをコールして、ジェネレータを一定の値でシードします。各実行時の出力を変える場合は、単にシードのコールを省略します。すると、システムによって適切なシードが選択されます。
表93-1 DBMS_RANDOMパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
シード値を使用して、パッケージを初期化します。 |
|
正規分布の乱数を戻します。 |
|
乱数を生成します。 |
|
シードをリセットします。 |
|
ランダム文字列を取得します。 |
|
パッケージを終了します。 |
|
このファンクションは、0以上1未満で小数点以下38桁(精度38桁)の乱数を取得します。このファンクションがオーバーロードされると、ランダムなOracleの数値xを取得します。このxは |
注意: INITIALIZEプロシージャ、RANDOMプロシージャおよびTERMINATEプロシージャはすべて使用されなくなります。現在はサポートされていますが、このリリースに含まれているのは下位互換性を保つという理由にすぎません。 |
このプロシージャはジェネレータを初期化します(「使用上の注意」を参照)。
構文
DBMS_RANDOM.INITIALIZE ( val IN BINARY_INTEGER);
プラグマ
PRAGMA restrict_references (initialize, WNDS)
パラメータ
使用上の注意
このプロシージャはSEEDプロシージャのコールのみを行うもので、今後サポートされません。
このファンクションは、標準正規分布の乱数を戻します。
構文
DBMS_RANDOM.NORMAL RETURN NUMBER;
プラグマ
PRAGMA restrict_references (normal, WNDS)
戻り値
このプロシージャは乱数を生成します(「使用上の注意」を参照)。
構文
DBMS_RANDOM.RANDOM RETURN binary_integer;
プラグマ
PRAGMA restrict_references (random, WNDS)
戻り値
使用上の注意
このプロシージャは現在はサポートされていますが、今後サポートされなくなるため、使用しないことをお薦めします。
このプロシージャは、シードをリセットします。
構文
DBMS_RANDOM.SEED ( seed IN BINARY_INTEGER); DBMS_RANDOM.SEED ( seed IN VARCHAR2);
プラグマ
PRAGMA restrict_references (seed, WNDS);
パラメータ
使用上の注意
シードには2000までの長さの文字列を使用できます。
このファンクションは、ランダム文字列を取得します。
構文
DBMS_RANDOM.STRING opt IN CHAR, len IN NUMBER) RETURN VARCHAR2;
プラグマ
PRAGMA restrict_references (string, WNDS)
パラメータ
表93-6 STRINGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
戻される文字列の表示方法を指定します。
これ以外の場合、戻される文字列は大文字のアルファベット文字になります。 |
|
戻される文字列の長さ。 |
戻り値
パッケージを終了するときは、TERMINATEプロシージャをコールします(「使用上の注意」を参照)。
構文
DBMS_RANDOM.TERMINATE
使用上の注意
このプロシージャではファンクションは実行されません。このプロシージャは現在はサポートされますが、今後サポートされなくなるため、使用しないことをお薦めします。
基本のファンクションでは、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;
パラメータ
表93-8 VALUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
乱数を生成する範囲の最小値(この値を含む)。生成される数値は |
|
乱数を生成する範囲の最大値(この値を含まない)。生成される数値は |
戻り値