ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

RANDOM.SEED.1およびRANDOM.SEED.2

RANDOM.SEED.1オプションおよびRANDOM.SEED.2オプションは、乱数の計算時にRANDOMによって使用される値を指定します。RANDOMは、数値を計算するためにオプションRANDOM.SEED.1およびRANDOM.SEED.2を使用し、その後で次回の値を変更します。

アプリケーション・プログラムの開発およびデバッグ時に同じ乱数列を再生成する場合、RANDOMを使用する前にRANDOM.SEED.1およびRANDOM.SEED.2を特定の値に設定します。

データ型

INTEGER

構文

RANDOM.SEED.1|RANDOM.SEED.2 = n

パラメータ

n

乱数を生成するときに使用する値を指定するINTEGER式。RANDOM.SEED.1のデフォルト値は12345、RANDOM.SEED.2のデフォルト値は1073です。

使用上の注意

同じ乱数列の再生成

例8-64「乱数の生成」に示されているように、アプリケーション・プログラムの開発およびデバッグ時に同じ乱数列を再生成する場合、RANDOMを使用する直前にRANDOM.SEED.1およびRANDOM.SEED.2を特定の値に設定します。その数列を繰り返し生成するには、RANDOMを再び使用する直前にこれらのオプションを同じ値に設定します。これにより、作成したプログラムの動作が異なる場合、乱数列の相違ではなくプログラムの相違が原因であることがわかります。

例5-92 テストのためのRANDOMの明示的なシード指定

アナリティック・ワークスペースに次のディメンションおよび変数があるとします。

DEFINE id DIMENSION TEXT
DEFINE myvar VARIABLE INTEGER <id>
 

次のコードに示すとおり、最初にシード指定せずにRANDOMを使用してmyvarを移入します。RANDOMが実行されるたびに異なる値がOracle OLAPによってmyvarに移入されます。

myvar = 0
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     11
a2                     19
a3                     14
 
myvar = 0
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     16
a2                     13
a3                     12
 

次に、myvarに対して予測可能な値を作成するRANDOMを使用するテストを記述します。次のコードに示すように、RANDOMの結果がその時々で同じになるようにするには、RANDOM.SEED.1およびRANDOM.SEED.2の値をRANDOMの実行直前に設定する必要があります。

myvar = 0
RANDOM.SEED.1 = 5
RANDOM.SEED.2 = 3
        myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     10
a2                     16
a3                     13
 
myvar = 0
RANDOM.SEED.1 = 5
RANDOM.SEED.2 = 3
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     10
a2                     16
a3                     13

RANDOM.SEED.1およびRANDOM.SEED.2に対して設定した値は、セッション全体を通して同じ値に保たれるわけではありません。次のコードに示すように、実行直前に毎回同じ値をシード指定しなかった場合、RANDOMによって生成される値は同じにはなりません

myvar = 0RANDOM.SEED.1 = 5
RANDOM.SEED.2 = 3
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     10
a2                     16
a3                     13

myvar = 0
        myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     11
a2                     16
a3                     20