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

Class template linear_congruential_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 linear_congruential_engine

boost::random::linear_congruential_engine

Synopsis

// In header: <boost/random/linear_congruential.hpp>
template<typename IntType, IntType a, IntType c, IntType m> 
class linear_congruential_engine {
public:
  // types
  typedef IntType result_type;
  // construct/copy/destruct
  linear_congruential_engine();
  explicit linear_congruential_engine(IntType);
  template<typename SeedSeq> explicit linear_congruential_engine(SeedSeq &);
  template<typename It> linear_congruential_engine(It &, It);
  // public member functions
  void seed();
  void seed(IntType);
  template<typename SeedSeq> void seed(SeedSeq &);
  template<typename It> void seed(It &, It);
  IntType 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 linear_congruential_engine &);
  template<typename CharT, typename Traits> 
    friend std::basic_istream< CharT, Traits > & 
    operator>>(std::basic_istream< CharT, Traits > &, 
               linear_congruential_engine &);
  // public data members
  static const bool has_fixed_range;
  static const IntType multiplier;
  static const IntType increment;
  static const IntType modulus;
  static const IntType default_seed;
};

Description

Обоснование шаблона классаlinear_congruential_engineмодель генератора псевдослучайных чисел. Линейные конгруэнтные псевдослучайные генераторы чисел описаны в:

«Математические методы в крупномасштабных вычислительных единицах», Д. Х. Лемер, Proc. 2nd Symposium on Large-Scale Digital Calculating Machines, Harvard University Press, 1951, pp.

Пусть x(n) обозначает последовательность чисел, возвращаемых неким генератором псевдослучайных чисел. Затем для линейного конгруэнтного генератора x(n+1) := (a * x(n) + c) mod m. Параметрами генератора являются x(0), a, c, m. Параметр шаблона IntType обозначает интегральный тип. Она должна быть достаточно большой, чтобы удерживать значения a, c и m. Параметры шаблонов a и c должны быть меньше m.

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

linear_congruential_engine public construct/copy/destruct

  1. <
    linear_congruential_engine();
    >

    Конструирует<linear_congruential_engine>, используя семя по умолчанию

  2. <
    explicitlinear_congruential_engine(IntTypex0);
    >

    Конструирует<linear_congruential_engine>, сея его<x0>.

  3. <
    template<typenameSeedSeq>explicitlinear_congruential_engine(SeedSeq&seq);
    >

    Конструирует<linear_congruential_engine>, сея его значениями, произведенными призывом к<seq.generate()>

    .
  4. <
    template<typenameIt>linear_congruential_engine(It&first,Itlast);
    >

    Конструирует<linear_congruential_engine>и сеет его со значениями, взятыми из диапазона итератора [первый, последний], и сначала корректирует, чтобы указать на элемент после последнего используемого. Если элементов не хватает, бросок<std::invalid_argument>.

    первым и последним должны быть итераторы ввода.

linear_congruential_engine public member functions

  1. <
    voidseed();
    >

    Звонок семени (default_seed)

  2. <
    voidseed(IntTypex0);
    >

    Если c mod m равно нулю, а x0 mod m равно нулю, то значение тока генератора изменяется на 1. В противном случае измените его на x0 mod m. Если c равно нулю, то различные семена в диапазоне [1,m] оставят генератор в различных состояниях. Если c не равно нулю, то диапазон равен [0,m].

  3. <
    template<typenameSeedSeq>voidseed(SeedSeq&seq);
    >

    Семена a<linear_congruential_engine>с использованием значений из SeedSeq.

  4. <
    template<typenameIt>voidseed(It&first,Itlast);
    >

    сеет<linear_congruential_engine>со значениями, взятыми из диапазона итератора [первый, последний], и корректирует<first>, чтобы указать на элемент после последнего используемого. Если не хватает элементов, бросок<std::invalid_argument>

    <first>и<last>должны быть входными итераторами.

  5. <
    IntTypeoperator()();
    >

    Возвращает следующее значение<linear_congruential_engine>

  6. <
    template<typenameIter>voidgenerate(Iterfirst,Iterlast);
    >

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

  7. <
    voiddiscard(boost::uintmax_tz);
    >

    Улучшает состояние генератора<z>

    .

linear_congruential_engine public static functions

  1. <
    staticresult_typemin();
    >

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

  2. <
    staticresult_typemax();
    >

    Возвращает наибольшую стоимость, которую может произвести<linear_congruential_engine>.

linear_congruential_engine friend functions

  1. <
    template<typenameCharT,typenameTraits>
     friendstd::basic_ostream<CharT,Traits>&
     operator<<(std::basic_ostream<CharT,Traits>&os,
                constlinear_congruential_engine&lcg);
    >

    Пишет<linear_congruential_engine><std::ostream>

    .
  2. <
    template<typenameCharT,typenameTraits>
     friendstd::basic_istream<CharT,Traits>&
     operator>>(std::basic_istream<CharT,Traits>&is,
                linear_congruential_engine&lcg);
    >

    Читает<linear_congruential_engine>из<std::istream>

    .

PrevUpHomeNext

Статья Class template linear_congruential_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 18:04:24/0.0099799633026123/1