Main Content

qrandstream

    説明

    関数 qrandstreamqrandstream オブジェクトを作成します。これは、準乱数ストリームを表します。qrandstream オブジェクトを作成した後、オブジェクト関数を使用して、そのオブジェクトから準乱数を生成したり、ストリームを初期状態に再設定したりできます。

    作成

    説明

    q = qrandstream(type,d) は、タイプ typed 次元準乱数ストリームを作成し、その結果を qrandstream オブジェクト q に格納します。

    q = qrandstream(type,d,Name=Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、点の間隔を指定したり、数列内のスキップする初期点の個数を指定したりできます。

    q = qrandstream(p) は、準乱数点集合オブジェクト p の準乱数ストリームを作成します。phaltonset オブジェクトまたは sobolset オブジェクトでなければなりません。

    入力引数

    すべて展開する

    qrandstream で準乱数を生成する元の数列の名前。"halton" または "sobol" として指定します。この引数を使用して、ハルトン列またはソボル列から準乱数ストリームを作成します。詳細については、haltonset および sobolset を参照してください。

    例: "sobol"

    データ型: char | string

    準乱数ストリームの次元。正の整数として指定します。

    例: 5

    データ型: single | double

    qrandstream で準乱数を生成する元の点集合。haltonset オブジェクトまたは sobolset オブジェクトとして指定します。p の作成には、関数 haltonset または sobolset を使用します。

    名前と値の引数

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

    R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

    例: qrandstream("sobol",3,Skip=5,Leap=50) は、ソボル列から最初の 5 つの点を省略し、生成される数値ごとに数列内の後続の 50 個の点を省略して、3 次元準乱数ストリームを作成します。

    点集合から省略する数列内の初期点の個数。正の整数スカラーを指定します。

    数列の初期点は、望ましくない性質を示すことがあります。たとえば、多くの場合に最初の点は (0,0,0,...) ですが、同等の点である (1,1,1,...) が絶対に現れないので、数列が偏る可能性があります。多くの場合、初期点は異なる次元の間の相関を示し、これらの相関は数列の後の方になると失われます。

    例: Skip=2e3

    データ型: single | double

    数列内の点の間隔。正の整数スカラーを指定します。qrandstream オブジェクトの点集合の Leap プロパティは、点を取得するときにリープして省略する数列内の点の個数を指定します。Leap の既定値は 0 です。これは、数列内のすべての点を取得することに相当します。

    リープは、点集合の品質を向上させるために使用されるテクニックです。ただし、Leap の値の指定には注意が必要です。Leap の値が多いと、単位超立方体の下位次元の大きい超矩形に近づかない数列が生成されるので、一様な準乱数点集合になりません。詳細は、[4]を参照してください。

    例: Leap=50

    データ型: single | double

    点の生成方法。"standard" または "graycode" として指定します。PointOrder を指定できるのは、type"sobol" の場合だけです。

    PointOrder プロパティは、ソボル列の点を生成する順序を指定します。PointOrder"standard" に設定した場合、生成される点は元のソボル列の実装と同じになります。PointOrder"graycode" に設定した場合、インデックス自体ではなく、インデックスのグレイ符号を使用する実装によって数列が生成されます。

    "graycode" オプションを使用すると数列の生成が高速になりますが、生成される点の順序が変化します。グレイ符号の実装の詳細については、[1]を参照してください。

    例: PointOrder="graycode"

    プロパティ

    すべて展開する

    この プロパティ は読み取り専用です。

    qrandstream で準乱数を生成する元の点集合。haltonset オブジェクトまたは sobolset オブジェクトとして指定します。PointSet は、qrandstream オブジェクトを作成するときに入力引数 p を使用して指定するか、入力引数 type を使用して指定できます。PointSethaltonset オブジェクトの場合の PointSet のプロパティを確認するには、haltonset を参照してください。PointSetsobolset オブジェクトの場合は、sobolset を参照してください。

    準乱数ストリーム内の次の数値のインデックス。正の整数として指定します。State の初期値は 1 です。State プロパティは、関数 reset を使用して 1 にリセットできます。

    データ型: double

    オブジェクト関数

    qrandストリームからの準乱数点の生成
    randストリームからの準乱数点の生成
    reset状態のリセット

    すべて折りたたむ

    ソボル列から 2 次元乱数ストリームを生成します。

    q = qrandstream("sobol",2)
    q = 
    Sobol quasi-random stream in 2 dimensions
    
    Point set properties:
                  Skip : 0
                  Leap : 0
        ScrambleMethod : none
            PointOrder : standard
    
    

    q は、2 次元準乱数ストリームの点集合とパラメーターを含む qrandstream オブジェクトです。

    ハルトン列から準乱数ストリームを作成します。ストリームから数列内の最初の 1000 個の点を省略し、生成される数値ごとに次の 100 個の点を省略します。qrandstream オブジェクトから点を生成し、その後にストリームを元の状態に再設定します。

    q = qrandstream("halton",3,Skip=1e3,Leap=1e2)
    q = 
    Halton quasi-random stream in 3 dimensions
    
    Point set properties:
                  Skip : 1000
                  Leap : 100
        ScrambleMethod : none
    
    

    q は、3 次元準乱数ストリームの点集合とパラメーターを含む qrandstream オブジェクトです。q はハルトン列から数値を生成します。

    q から点を 4 つ生成します。

    X = qrand(q,4)
    X = 4×3
    
        0.0928    0.3475    0.0051
        0.6958    0.2035    0.2371
        0.3013    0.8496    0.4307
        0.9087    0.5629    0.6166
    
    

    X の行にストリーム内の最初の 4 つの点が格納されます。X の列は点の次元に対応します。

    qState プロパティを表示します。

    q.State
    ans = 5
    

    State プロパティは、数値ストリーム内の次の点のインデックスが 5 であることを示しています。

    State1 にリセットし、q から点をもう 1 つ生成します。

    reset(q)
    x1 = qrand(q)
    x1 = 1×3
    
        0.0928    0.3475    0.0051
    
    

    どちらにもストリーム内の最初の点が格納されるため、x1X の最初の行と同じになります。

    ソボル列から 3 次元点集合を作成し、点集合をスクランブルします。

    s = sobolset(3);
    p = scramble(s,"MatousekAffineOwen")
    p = 
    Sobol point set in 3 dimensions (9007199254740992 points)
    
    Properties:
                  Skip : 0
                  Leap : 0
        ScrambleMethod : MatousekAffineOwen
            PointOrder : standard
    
    

    p は、ソボル列をスクランブルして作成された点集合を含む sobolset オブジェクトです。

    p から準乱数ストリームを作成します。

    q = qrandstream(p)
    q = 
    Sobol quasi-random stream in 3 dimensions
    
    Point set properties:
                  Skip : 0
                  Leap : 0
        ScrambleMethod : MatousekAffineOwen
            PointOrder : standard
    
    

    q は、点集合 p から点を生成する qrandstream オブジェクトです。

    参照

    [1] Bratley, P., and B. L. Fox. “Algorithm 659 Implementing Sobol's Quasirandom Sequence Generator.” ACM Transactions on Mathematical Software. Vol. 14, No. 1, 1988, pp. 88–100.

    [2] Hong, H. S., and F. J. Hickernell. “Algorithm 823: Implementing Scrambled Digital Sequences.” ACM Transactions on Mathematical Software. Vol. 29, No. 2, 2003, pp. 95–109.

    [3] Joe, S., and F. Y. Kuo. “Remark on Algorithm 659: Implementing Sobol's Quasirandom Sequence Generator.” ACM Transactions on Mathematical Software. Vol. 29, No. 1, 2003, pp. 49–57.

    [4] Kocis, L., and W. J. Whiten. “Computational Investigations of Low-Discrepancy Sequences.” ACM Transactions on Mathematical Software. Vol. 23, No. 2, 1997, pp. 266–294.

    [5] Matousek, J. “On the L2-Discrepancy for Anchored Boxes.” Journal of Complexity. Vol. 14, No. 4, 1998, pp. 527–556.

    バージョン履歴

    R2008a で導入