Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template mersenne_twister_engine

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template mersenne_twister_engine

boost::random::mersenne_twister_engine

Synopsis

// In header: <boost/random/mersenne_twister.hpp>
template<typename UIntType, std::size_t w, std::size_t n, std::size_t m, 
         std::size_t r, UIntType a, std::size_t u, UIntType d, std::size_t s, 
         UIntType b, std::size_t t, UIntType c, std::size_t l, UIntType f> 
class mersenne_twister_engine {
public:
  // types
  typedef UIntType result_type;
  // construct/copy/destruct
  mersenne_twister_engine();
  explicit mersenne_twister_engine(UIntType);
  template<typename It> mersenne_twister_engine(It &, It);
  template<typename SeedSeq> explicit mersenne_twister_engine(SeedSeq &);
  // public member functions
  void seed();
  void seed(UIntType);
  template<typename SeeqSeq> void seed(SeeqSeq &);
  template<typename It> void seed(It &, It);
  result_type operator()();
  template<typename Iter> void generate(Iter, Iter);
  void discard(boost::uintmax_t);
  // public static functions
  static result_type min();
  static result_type max();
  // friend functions
  template<typename CharT, typename Traits> 
    friend std::basic_ostream< CharT, Traits > & 
    operator<<(std::basic_ostream< CharT, Traits > &, 
               const mersenne_twister_engine &);
  template<typename CharT, typename Traits> 
    friend std::basic_istream< CharT, Traits > & 
    operator>>(std::basic_istream< CharT, Traits > &, 
               mersenne_twister_engine &);
  friend bool operator==(const mersenne_twister_engine &, 
                         const mersenne_twister_engine &);
  friend bool operator!=(const mersenne_twister_engine &, 
                         const mersenne_twister_engine &);
  // public data members
  static const std::size_t word_size;
  static const std::size_t state_size;
  static const std::size_t shift_size;
  static const std::size_t mask_bits;
  static const UIntType xor_mask;
  static const std::size_t tempering_u;
  static const UIntType tempering_d;
  static const std::size_t tempering_s;
  static const UIntType tempering_b;
  static const std::size_t tempering_t;
  static const UIntType tempering_c;
  static const std::size_t tempering_l;
  static const UIntType initialization_multiplier;
  static const UIntType default_seed;
  static const UIntType parameter_a;
  static const std::size_t output_u;
  static const std::size_t output_s;
  static const UIntType output_b;
  static const std::size_t output_t;
  static const UIntType output_c;
  static const std::size_t output_l;
  static const bool has_fixed_range;
};

Description

Обоснования шаблона класса mersenne_twister_engine модели pseudo-случайного генератора чисел. Использует алгоритм, описанный в

«Mersenne Twister: A 623-dimensionally equidistributed uniform pseudorandom number generator», Makoto Matsumoto and Takuji Nishimura, ACM Transactions on Modeling and Computer Simulation: Special Issue on Uniform Random Number Generation, Vol. 8, No. 1, January 1998, pp.

[Note] Note

Вариант ускорения был реализован с нуля и не вытекает из или не использует mt19937.c, представленный на вышеупомянутом сайте WWW. Тем не менее, было подтверждено, что оба продукта производят одинаковые результаты.

Посев из целого числа был изменен в апреле 2005 года для устранения слабости.

Качество генератора в решающей степени зависит от выбора параметров. Пользовательский код должен использовать один из разумно параметризованных генераторов, таких как mt19937.

Генератор требует значительных объемов памяти для хранения своего массива состояний. Например, mt11213b требует около 1408 байт, а mt19937 требует около 2496 байт.

mersenne_twister_engine public construct/copy/destruct

  1. mersenne_twister_engine;

    Создает mersenne_twister_engine и вызывает seed().

  2. explicitmersenne_twister_engine(UIntTypeзначение);

    Создает mersenne_twister_engine и вызывает seed(значение).

  3. template<typenameIt>mersenne_twister_engine(It ,It Last;
  4. templatetypename SeedSeq>explicitmersenne_twister_engine& seq;

    Constructs a mersenne_twister_engine.

Конструктор копий всегда предпочтительнее шаблонного конструктора.

mersenne_twister_engine public member functions

  1. void seed();

    Звонки seed(default_seed).

  2. void seed(UIntType значение);

    Устанавливает состояние x(0) на v mod 2w. Затем, итеративно, устанавливает x(i) на (i + f* (x(i-1) xor (x(i-1) rshift w-2))) мод 2w для i = 1 .. n-1. x(n) является первым значением, которое возвращается оператором().

  3. templatetypename SeeqSeq> voidseed(SeeqSeq & seq;

    Семена mersenne_twister_engine с использованием значений, полученных seq.generate().

  4. templatetypenameIt>voidseed(It & first,It last);

    Устанавливает состояние генератора с использованием значений из диапазона итераторов.

  5. result_type оператор();

    Создает следующее значение генератора.

  6. templatetypename Iter> voidgenerate(Iter first, Iter last;

    Заполняет диапазон случайными значениями

  7. void discard(boost::uintmax_t z);

    Увеличивает состояние генератора на шагах z. Эквивалент

     для (неподписанныйдлинный длинный i; i;z;; 

mersenne_twister_engine public static functions

  1. static result_typemin();

    Возвращает наименьшее значение, которое может произвести генератор.

  2. static result_typemax();

    Возвращает наибольшее значение, которое может произвести генератор.

mersenne_twister_engine friend functions

  1. template CharT, TraitsCharT>, операторBasic_ostream, >  os, const &mersenne_twister_engineWrites a mersenne_twister_engine:73>std::76> 

  2. template CharT,typenameTraitsBasic_istream>операторBasic_istream< >> mersenne_twister_engine
    mersenne_twister_engine
    из std:74>

  3. friend boolоператор(const mersenne_twister_engine , constmersenne_twister_engine & y_;

    Вернется истинным, если два генератора находятся в одном и том же состоянии и, таким образом, будут производить идентичные последовательности.

  4. friend boolоператор!=const mersenne_twister_engine , constmersenne_twister_engine &;

    Возвращается верно, если два генератора находятся в разных состояниях.


PrevUpHomeNext

Статья Class template mersenne_twister_engine раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:10:45/0.027397871017456/1