
スペクトルテストは、擬似乱数生成器(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)
| d | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|
| ν2 日 |
536936458 | 118 | 116 | 116 | 116 | ||
| μ d | 3.14 | 10 −5 | 10 −4 | 10 −3 | 0.02 | ||
| f d [a] | 0.520224 | 0.018902 | 0.084143 | 0.207185 | 0.368841 | 0.552205 | 0.578329 |
総合的な評価は次の通りです: 、。[a]
ジョージ・マルサリア(1972)は、覚えやすく、特に大きなスペクトルテスト番号を持っているため、「すべての乗数の中で最良の候補」であると考えています。[9]
| d | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|
| ν2 日 |
4243209856 | 2072544 | 52804 | 6990 | 242 | ||
| μ d [b] | 3.10 | 2.91 | 3.20 | 5.01 | 0.017 | ||
| f d [a] | 0.462490 | 0.313127 | 0.457183 | 0.552916 | 0.376706 | 0.496687 | 0.685247 |
総合的な評価は次の通りです: 、。[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 volume 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 . White Plains, 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日]. 「合同型擬似乱数生成器のための計算容易かつスペクトル的に良好な乗算器」.ソフトウェア:実践と経験. 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 (ed.), "The Structure of Linear Congruential Sequences", Applications of Number Theory to Numerical Analysis , Academic Press, pp. 249– 285, ISBN 978-0-12-775950-0、 2024年1月29日取得
さらに読む
- エンタッチャー, カール (1998年1月). 「よく知られた線形合同型擬似乱数生成器の不良部分列」. ACM Transactions on Modeling and Computer Simulation . 8 (1): 61– 70. doi :10.1145/272991.273009.–多くのよく知られたLCGを
(このテキストではこのように表記)リストします
- この作品の拡張版は、Entacher, Karl (2001). 「線形構造を持つ選択された擬似乱数生成器のコレクション - 拡張版」として入手可能です。