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 2
W. 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