MTToolBox  0.2.10
公開メンバ関数
MTToolBox::AlgorithmRecursionSearch< U, V > クラステンプレート

状態遷移関数のパラメータを探索する。 [詳解]

#include <AlgorithmRecursionSearch.hpp>

公開メンバ関数

 AlgorithmRecursionSearch (RecursionSearchable< U, V > &generator, AbstractGenerator< V > &bg)
 コンストラクタ [詳解]
 
 AlgorithmRecursionSearch (RecursionSearchable< U, V > &generator, AbstractGenerator< V > &bg, const AlgorithmPrimitivity &primitivity)
 コンストラクタ [詳解]
 
bool start (int try_count)
 状態遷移パラメータの探索を開始する [詳解]
 
const std::string getParamString ()
 疑似乱数生成器のパラメータを表す文字列を返す このメソッドは start() が true を返した場合にのみ呼び出すべきである。 [詳解]
 
const NTL::GF2X & getMinPoly () const
 最小多項式を返す このメソッドは start() が true を返した場合にのみ呼び出すべきである。 [詳解]
 
long getCount () const
 このインスタンスが作られてからstart() が終了するまでに試行した回数を返す。 [詳解]
 

詳解

template<typename U, typename V = U>
class MTToolBox::AlgorithmRecursionSearch< U, V >

状態遷移関数のパラメータを探索する。

GF(2)線形疑似乱数生成器の状態遷移関数が既約な特性多項式をもつよ うなパラメータを探索する。

コンストラクタに与えるgenerator はこのクラスのstart()メソッドを 呼び出すと変更される。そしてstart()がtrueを返したなら、変更後の generatorはその状態遷移関数が既約な特性多項式を持つように変更さ れているはずである。従って変更後のgeneratorからパラメータを取得 することによって状態遷移関数が既約となるパラメータを取得できる。

  1. start()メソッドを呼ぶ。
  2. start()メソッドがtrueを 返したら、getMinpoly(), getCount()などのメソッドを呼んで情報を取 得する。またgeneratorのgetParamString() からも情報を取得できる。
テンプレート引数
U疑似乱数生成器の出力する値の型、符号なし型であること。
Vパラメータ生成器の出力する値の型

構築子と解体子

template<typename U , typename V = U>
MTToolBox::AlgorithmRecursionSearch< U, V >::AlgorithmRecursionSearch ( RecursionSearchable< U, V > &  generator,
AbstractGenerator< V > &  bg 
)
inline

コンストラクタ

このコンストラクタでは、状態空間の大きさがメルセンヌ指数の場合を 想定している。

bg はgenerator とは異なるインスタンスである必要がある。 通常の場合、bg にはMersenneTwisterのインスタンスを与えるとよい。 TinyMT では、規則的に減少する数列を使用している。

引数
generatorgenerator はこのクラスのメソッドによって変更される。
bgパラメータ探索に使用する疑似乱数生成器

参照先 MTToolBox::isPrime(), MTToolBox::MersennePrimitivity.

template<typename U , typename V = U>
MTToolBox::AlgorithmRecursionSearch< U, V >::AlgorithmRecursionSearch ( RecursionSearchable< U, V > &  generator,
AbstractGenerator< V > &  bg,
const AlgorithmPrimitivity primitivity 
)
inline

コンストラクタ

このコンストラクタでは、原始多項式判定アルゴリズムを指定できる。

bg はgenerator とは異なるインスタンスである必要がある。 通常の場合、bg にはMersenneTwisterのインスタンスを与えるとよい。 TinyMT では、規則的に減少する数列を使用している。

引数
generatorgenerator はこのクラスのメソッドによって変更される。
bgパラメータ探索に使用する疑似乱数生成器
primitivity原始多項式判定アルゴリズム

参照先 MTToolBox::isPrime().

関数詳解

template<typename U , typename V = U>
long MTToolBox::AlgorithmRecursionSearch< U, V >::getCount ( ) const
inline

このインスタンスが作られてからstart() が終了するまでに試行した回数を返す。

戻り値
tried count after this class has created.
template<typename U , typename V = U>
const NTL::GF2X& MTToolBox::AlgorithmRecursionSearch< U, V >::getMinPoly ( ) const
inline

最小多項式を返す このメソッドは start() が true を返した場合にのみ呼び出すべきである。

一般には最小多項式は初期状態と出力関数に依存するが、GF(2)線 形疑似乱数生成器の最大周期を与えるような最小多項式は一つであ る。

戻り値
最小多項式
template<typename U , typename V = U>
const std::string MTToolBox::AlgorithmRecursionSearch< U, V >::getParamString ( )
inline

疑似乱数生成器のパラメータを表す文字列を返す このメソッドは start() が true を返した場合にのみ呼び出すべきである。

戻り値
疑似乱数生成器のパラメータを表す文字列
template<typename U , typename V = U>
bool MTToolBox::AlgorithmRecursionSearch< U, V >::start ( int  try_count)
inline

状態遷移パラメータの探索を開始する

  1. 疑似乱数生成器に状態遷移パラメータをランダムに生成させ、
  2. その状態遷移パラメータのもとで出力列の最小多項式を求める。
  3. 最小多項式が求める次数の原始多項式か判定し、原始多項式なら成功して終了。
  4. そうでなければ、状態遷移パラメータのランダム生成から繰り返す。
  5. 繰り返しの回数が try_count を越えると失敗して終了する。
引数
try_count試行回数の上限
戻り値
true 求める次数の原始多項式となる最小多項式が得られた場合

参照先 MTToolBox::isPrime(), MTToolBox::minpoly().


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