
スペクトルテストは、擬似乱数生成器(PRNG)の一種である線形合同型生成器(LCG) の品質を統計的にテストするものです。[1] LCG は、2 次元以上にプロットすると、すべての可能な出力を見つけることができる線または超平面が形成されるという特性があります。[2]スペクトルテストは、これらの平面間の距離を比較します。平面が離れているほど、生成器の品質は低下します。[3]このテストは LCG の格子構造を研究するために考案されているため、他の PRNG ファミリには適用できません。
ドナルド・クヌース[4]によれば、これはこれまで知られているテストの中で最も強力なテストであり、ほとんどの統計テストに合格するLCGを失敗させることができる。IBMサブルーチンRANDU [5] [6] LCGは3次元以上ではこのテストに失敗する。
PRNG がシーケンス を生成するとします。シーケンス を覆う平行平面間の最大距離をとします。スペクトル テストでは、シーケンスが急速に減衰しないことを確認します。
Knuth は、次の 5 つの数値がそれぞれ 0.01 より大きいことを確認することを推奨しています。 ここで、はLCG の係数です。
功績
クヌースは、分離が 理論上の最小値にどれだけ近いかを表す性能指数を定義しています。スティールとヴィグナの再表記では、次元 に対して、数値は次のように定義されます[7] : 3 ここで、は前述のように定義され、 は次元dのエルミート定数です。は、可能な限り最小の面間分離です。[7] : 3
L'Ecuyer 1991 はさらに、いくつかの次元にわたる の最小値に対応する 2 つの尺度を導入しています。 [8]再度表記すると、は次元 2 から までの LCG の最小値であり、乗法合同型擬似乱数生成器 (MCG)、つまり乗算のみが使用されるもの、または の場合と同じです。 Steele と Vigna は、 はこれら 2 つのケースで異なる方法で計算されるため、別々の値が必要になると指摘しています。[7] : 13 彼らはさらに、「調和」加重平均の性能指数(および) を定義しています。[7] : 13
例
悪名高いRANDUの小さな変種には次の特徴がある: [4] : (表1)
総合的な評価は次の通りです: 、。[a]
ジョージ・マルサリア(1972)は、覚えやすく、特にスペクトルテスト数が大きいため、「すべての乗数の中で最良の候補」であると考えています。[9]
総合的な評価は次の通りです: 、。[a]
Steele & Vigna (2020) は、 m = 2 nのさまざまな選択肢と特定のビット長aに対して、最も総合的な性能指数の高い乗算器を提供しています。また、個々の値と、これらの値を計算するためのソフトウェアパッケージも提供しています。 [7] : 14–5 たとえば、m = 2 32の場合の最良の 17 ビットa は次のようになると報告されています。
- LCG(c≠0)の場合、0x1dab5(121525)。, . [7] : 14
- MCG(c = 0)の場合、0x1e92d(125229)。, . [7] : 14
追加イラスト
参考文献
- ^ abcd Steele & Vigna (2020)のソフトウェア、プログラム「mspect」(src/spect.cpp、乗法モード)を使用して計算。
- ^ νから計算2
日Marsaglia が報告した。
- ^ Williams, KB; Dwyer, Jerry (1996 年 8 月 1 日)、「Testing Random Number Generators, Part 2」、Dr. Dobb's Journal 、 2012 年1 月 26 日閲覧。
- ^ Marsaglia, George (1968年9月). 「乱数は主に平面に落ちる」(PDF) . PNAS . 61 (1): 25–28. Bibcode :1968PNAS...61...25M. doi : 10.1073 /pnas.61.1.25 . PMC 285899. PMID 16591687.
- ^ Jain, Raj. 「乱数ジェネレータのテスト(講義)」(PDF)。ワシントン大学セントルイス校。 2016年12月2日閲覧。
- ^ ab Knuth, Donald E. (1981)、「3.3.4: スペクトルテスト」、The Art of Computer Programming第 2 巻: Seminumerical algorithms (第 2 版)、Addison-Wesley。
- ^ IBM、System/360 Scientific Subroutine Package、バージョン II、プログラマーズ・マニュアル、H20-0205-1、1967 年、54 ページ。
- ^ International Business Machines Corporation (1968)。「IBM/360 Scientific Subroutine Package (360A-CM-03X) Version III」(PDF)。Stan 's Library。II。ホワイトプレーンズ、NY: IBM Technical Publications Department: 77。doi : 10.3247 /SL2Soft08.001。Scientific Application Program H20-0205-3。
- ^ abcdefg Steele, Guy L. Jr. ; Vigna, Sebastiano (2022年2月) [2020年1月15日]. 「合同型擬似乱数ジェネレーターのための計算上簡単でスペクトル的に良好な乗算器」(PDF) .ソフトウェア: 実践と経験. 52 (2): 443–458. arXiv : 2001.05304 . doi : 10.1002/spe.3030 .関連ソフトウェアとデータは https://github.com/vigna/CPRNG にあります。
- ^ L'Ecuyer, Pierre (1999 年 1 月). 「異なるサイズと良好な格子構造を持つ線形合同型生成器の表」(PDF) .計算数学. 68 (225): 249–260. Bibcode :1999MaCom..68..249L. CiteSeerX 10.1.1.34.1024 . doi :10.1090/S0025-5718-99-00996-5. 必ず正誤表も読んでください。
- ^ Marsaglia, GEORGE (1972-01-01)、Zaremba, SK (編)、「線形合同シーケンスの構造」、数値解析への数論の応用、Academic Press、pp. 249–285、ISBN 978-0-12-775950-0、 2024年1月29日取得
さらに読む
- Entacher , Karl (1998 年 1 月)。「よく知られている線形合同型擬似乱数生成器の不良部分列」。ACM Transactions on Modeling and Computer Simulation。8 ( 1): 61–70。doi :10.1145/272991.273009。–よく知られている多くのLCGを
(このテキストではこのように表記)リストします
- この作品の拡張版は、Entacher, Karl (2001)「線形構造を持つ選択された疑似乱数ジェネレーターのコレクション - 拡張バージョン」として入手できます。
