subtract_with_carry_engine (Clase)

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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

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 los tipos posibles, consulte <> </> > .

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.

subtract_with_carry_engine::subtract_with_carry_enginesubtract_with_carry_engine::minsubtract_with_carry_engine::discard
subtract_with_carry_engine::operator()subtract_with_carry_engine::maxsubtract_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 acerca de los miembros del motor, consulte <> </> > .

El substract_with_carry_engine clase de plantilla es una mejora de la linear_congruential_engine. Ninguno de estos motores es tan rápido o con los resultados de alta calidad que el mersenne_twister_engine.

Este motor genera valores de un usuario especificado tipo integral sin signo mediante la relación de repetición ( punto) x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M, donde 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 portador de más valores R. Estos valores consisten en los últimos valores R devueltos si operator() se ha llamado al menos R veces, de lo contrario, en los valores N que se han devuelto y los últimos valores R - Nde la inicialización.

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

Aunque puede construir directamente un generador de este motor, también puede utilizar 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 el algoritmo de resta con acarreo, vea el artículo de la Wikipedia generador de Fibonacci retardado.

Encabezado:<>>

Espacio de nombres: std

<>>

Mostrar: