Spec-Zone.ru › C++

std::subtract_with_carry_engine

Определено в заголовочном файле <random>
template<
    class UIntType,
    std::size_t w, std::size_t s, std::size_t r
> class subtract_with_carry_engine;
(с C++11)

Является генератором псевдослучайных чисел, использующим алгоритм «вычитание с переносом».

Состояние subtract_with_carry_engine состоит из последовательности \(\small{\{ X_i\}(0 \le i <r)}\){Xi} (0 ≤ i <r), где каждое \(\small{X_i}\)Xi находится в интервале \(\small{[0, 2^w)}\)[0, 2w).

Пусть все индексы в последовательности берутся по модулю r, c — значение переноса, которое может быть либо 0, либо 1. Переход к следующему состоянию выполняется следующим образом:

  • пусть \(\small{Y=X_{i-s}-X_{i-r}-c}\)Y=Xi-s-Xi-r-c,
  • установите \(\small{X_i}\)Xi в \(\small{Y \mod 2^w}\)Y mod 2w,
  • установите c в 1, если \(\small{Y<0}\)Y<0, и в 0 в противном случае.

Следующие определения типов задают генератор псевдослучайных чисел с двумя обычно используемыми наборами параметров:

Определено в заголовочном файле <random>
Тип Определение
ranlux24_base (C++11) std::subtract_with_carry_engine<std::uint_fast32_t, 24, 10, 24>
ranlux48_base (C++11) std::subtract_with_carry_engine<std::uint_fast64_t, 48, 5, 12>

Параметры шаблона

UIntType - Тип результата, генерируемый генератором. Результат неопределён, если это не один из unsigned short, unsigned int, unsigned long, или unsigned long long.
w - Размер слова в битах последовательности состояния, 10 < w <= std::numeric_limits<UIntType>::digits.
s - Короткий сдвиг.
r - Длинный сдвиг, где 0 < s < r.

Типы членов

Тип члена Определение
result_type (C++11) Целочисленный тип, генерируемый движком. Результаты неопределены, если это не беззнаковый целочисленный тип.

Члены-функции

Конструктор и установка начального значения
(конструктор)
(C++11)
создаёт генератор
(публичная функция-член)
seed
(C++11)
устанавливает текущее состояние генератора
(публичная функция-член)
Генерация
operator()
(C++11)
продвигает состояние генератора и возвращает сгенерированное значение
(публичная функция-член)
discard
(C++11)
продвигает состояние генератора на заданное количество шагов
(публичная функция-член)
Характеристики
min
[static] (C++11)
возвращает наименьшее возможное значение в диапазоне вывода
(публичная статическая функция-член)
max
[static] (C++11)
возвращает наибольшее возможное значение в диапазоне вывода
(публичная статическая функция-член)

Функции вне класса

operator==operator!=
(C++11)(C++11)(удалено в C++20)
сравнивает внутренние состояния двух генераторов псевдослучайных чисел
(функция)
operator<<operator>>
(C++11)
выполняет ввод/вывод в поток генератора псевдослучайных чисел
(шаблон функции)

Постоянные члены

constexpr std::size_t word_size
[static] (C++11)
параметр шаблона w, размер слова
(публичная статическая константа-член)
constexpr std::size_t short_lag
[static] (C++11)
параметр шаблона s, короткий сдвиг
(публичная статическая константа-член)
constexpr std::size_t long_lag
[static] (C++11)
параметр шаблона r, длинный сдвиг
(публичная статическая константа-член)
constexpr std::uint_least32_t default_seed
[static] (C++11)
константное значение 19780503u
(публичная статическая константа-член)

Пример

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/subtract_with_carry_engine

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API