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