Compartir vía


subtract_with_carry_engine (Clase)

Genera una secuencia aleatoria mediante el algoritmo resta por acarreo (Fibonacci retrasado).

Sintaxis

template <class UIntType, size_t W, size_t S, size_t R>
class subtract_with_carry_engine;

Parámetros

UIntType
El tipo de resultado integral sin signo. Para obtener información sobre los tipos posibles, consulte <random>.

W
Tamaño de palabra. Tamaño de cada palabra, en bits, de la secuencia de estado. Condición previa:0 < W ≤ numeric_limits<UIntType>::digits

S
Intervalo corto. Número de valores íntegros. Condición previa:0 < S < R

R
Intervalo largo. Determina la recurrencia en la serie generada.

Miembros

subtract_with_carry_engine::subtract_with_carry_engine subtract_with_carry_engine::max
subtract_with_carry_engine::min
subtract_with_carry_engine::discard
subtract_with_carry_engine::operator()
subtract_with_carry_engine::seed

default_seed es un miembro constante, definido como 19780503u, utilizado como el valor de parámetro predeterminado para subtract_with_carry_engine::seed y el constructor de valores simple.

Para obtener más información sobre los miembros del motor, vea <random>.

Comentarios

La plantilla de clase substract_with_carry_engine es una mejora respecto al linear_congruential_engine. Ninguno de estos motores es tan rápido o tiene unos resultados de mayor calidad que el mersenne_twister_engine.

Este motor produce valores de un tipo entero sin signo especificado por el usuario que usa la relación de periodicidad ( periodo) x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M, en la que cy(i) tiene el valor 1 si x(i - S) - x(i - R) - cy(i - 1) < 0. De lo contrario 0, y M tiene el valor 2W. El estado del motor es un indicador de acarreo más los valores de R. Estos valores consisten en los últimos valores R devueltos si operator() se ha llamado al menos R veces, de lo contrario los valores de N que se han devuelto y los últimos valores R - N de la inicialización.

El argumento de la plantilla UIntType debe ser lo suficientemente grande para contener valores de hasta M - 1.

Aunque puede construir un generador directamente a partir de este motor, también puede usar una de estas definiciones de tipos predefinidas:

ranlux24_base: se usa como base para ranlux24. typedef subtract_with_carry_engine<unsigned int, 24, 10, 24> ranlux24_base;

ranlux48_base: se usa como base para ranlux48. typedef subtract_with_carry_engine<unsigned long long, 48, 5, 12> ranlux48_base;

Para obtener información detallada sobre la resta con algoritmo de motor de transporte, consulte el artículo de Wikipedia Generador Fibonacci.

Requisitos

Encabezado:<random>

Espacio de nombres: std

Consulte también

<random>