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
引数
乱数を生成するときに使用する値を指定するINTEGER
式。RANDOM.SEED.1のデフォルト値は12345、RANDOM.SEED.2のデフォルト値は1073です。
注意
同じ乱数列の再生成
例8-64「乱数の生成」に示されているように、アプリケーション・プログラムの開発およびデバッグ時に同じ乱数列を再生成する場合、RANDOMを使用する直前にRANDOM.SEED.1およびRANDOM.SEED.2を特定の値に設定します。その数列を繰り返し生成するには、これらのオプションを同じ値に設定してRANDOMを再び使用します。これにより、作成したプログラム動作が異なる場合、乱数列の相違ではなくプログラムの相違が原因であることがわかります。
例
例6-94 テストのためのRANDOMの明示的なシード指定
アナリティック・ワークスペースに次のディメンションおよび変数があるとします。
DEFINE id DIMENSION TEXT DEFINE myvar VARIABLE INTEGER <id>
次のコードに示すように、最初にRANDOMをシード指定せずに使用してmyvar
を移入すると、RANDOMが実行されるたびに異なる値が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