MTToolBox  0.2.10
公開メンバ関数
MTToolBox::AlgorithmPartialBitPattern< U, V, bit_len, param_num, try_bit_len, step, lsb > クラステンプレート

疑似乱数生成器の高次元均等分布性を改善するために、テンパ リングパラメータを探索するアルゴリズム [詳解]

#include <AlgorithmPartialBitPattern.hpp>

MTToolBox::AlgorithmPartialBitPattern< U, V, bit_len, param_num, try_bit_len, step, lsb > の継承関係図
MTToolBox::AlgorithmTempering< U, V >

公開メンバ関数

int operator() (TemperingCalculatable< U, V > &rand, bool verbose=false)
 テンパリングパラメータを探索する。 [詳解]
 
bool isLSBTempering () const
 このテンパリングパラメータ探索がLSBからの探索であるかどうか [詳解]
 
- 基底クラス MTToolBox::AlgorithmTempering< U, V > に属する継承公開メンバ関数
virtual ~AlgorithmTempering ()
 仮想デストラクタ(必須) [詳解]
 

詳解

template<typename U, typename V, int bit_len, int param_num, int try_bit_len, int step = 5, bool lsb = false>
class MTToolBox::AlgorithmPartialBitPattern< U, V, bit_len, param_num, try_bit_len, step, lsb >

疑似乱数生成器の高次元均等分布性を改善するために、テンパ リングパラメータを探索するアルゴリズム

このアルゴリズムはMTGPのテンパリングパラメータを探索するために開 発され、TinyMTのテンパリングパラメータ探索にも使われている。

警告
テンパリングパラメータの探索をしても十分良い高次元均等 分布が得られない場合は、状態遷移関数の変更を考慮した方がよい。状 態遷移関数で十分ビットミックスされていない場合、単純なテンパリン グで均等分布次元を最大化することはできないだろう。
テンプレート引数
U疑似乱数生成器の出力の型, 例えば uint32_t など。
Vパラメータ生成器の出力の型
bit_lenテンパリングパラメータのビット長, 通常は出力のビッ ト長と等しいと思われる。
param_numテンパリングパラメータの数, MTGPでは4, TinyMT では 1
try_bit_len出力のうちテンパリングされる部分の長さ。上位 からこのビット数だけがテンパリングされる。
step一度に何ビットずつビットパターンを生成するか。この 数を大きくすると実行時間が延びるであろう。MTGP では 5 ビットずつ 生成している。
lsbこのフラグが指定されると、上位ビットと下位ビットが反 転されて均等分布次元が計算される。つまり下位ビットの均等分布次元 をあげたい時に指定する。TestU01のBigCrushには下位ビットの均等分 布次元を改善することによってパス可能性が高まるテストがある。

関数詳解

template<typename U , typename V , int bit_len, int param_num, int try_bit_len, int step = 5, bool lsb = false>
bool MTToolBox::AlgorithmPartialBitPattern< U, V, bit_len, param_num, try_bit_len, step, lsb >::isLSBTempering ( ) const
inlinevirtual

このテンパリングパラメータ探索がLSBからの探索であるかどうか

戻り値
true LSBからのテンパリングパラメータ探索

MTToolBox::AlgorithmTempering< U, V >を再実装しています。

template<typename U , typename V , int bit_len, int param_num, int try_bit_len, int step = 5, bool lsb = false>
int MTToolBox::AlgorithmPartialBitPattern< U, V, bit_len, param_num, try_bit_len, step, lsb >::operator() ( TemperingCalculatable< U, V > &  rand,
bool  verbose = false 
)
inlinevirtual

テンパリングパラメータを探索する。

この処理の呼び出しは長時間かかる可能性がある。

引数
randテンパリングパラメータを探索する疑似乱数生成器
verbose冗長な出力をするフラグ
戻り値
常に0を返す

MTToolBox::AlgorithmTempering< U, V >を実装しています。

参照先 MTToolBox::TemperingCalculatable< U, V >::resetReverseOutput(), MTToolBox::TemperingCalculatable< U, V >::setReverseOutput().


このクラス詳解は次のファイルから抽出されました: