Subtract-with-carry es un generador de números pseudoaleatorios : uno de los muchos algoritmos diseñados para producir una larga serie de números de apariencia aleatoria a partir de una pequeña cantidad de datos iniciales. Es del tipo Fibonacci rezagado introducido por George Marsaglia y Arif Zaman en 1991. [1] "Fibonacci rezagado" se refiere al hecho de que cada número aleatorio es una función de dos de los números anteriores en algunos desplazamientos fijos especificados o "rezagos".
La secuencia generada por el motor de resta con acarreo se puede describir mediante la relación de recurrencia :
dónde .
Las constantes S y R se conocen como los rezagos corto y largo, respectivamente. [2] Por lo tanto, las expresiones y corresponden a los términos previos S -ésimo y R -ésimo de la secuencia. S y R satisfacen la condición . El módulo M tiene el valor , donde W es el tamaño de palabra, en bits, de la secuencia de estados y .
El motor de resta con acarreo es uno de la familia de generadores que incluye también los motores de suma con acarreo y de resta con préstamo. [1]
Es uno de los tres motores generadores de números aleatorios incluidos en la biblioteca estándar C++11 . [3]