Subtract-with-carry is a pseudorandom number generator of the lagged Fibonacci type introduced by George Marsaglia and Arif Zaman in 1991. It is one of three random number generator engines included in the standard C++11 library.
Sequence generated by the subtract-with-carry engine may be described by the recurrence relation:
where
Constants S and R are known as the short and long lags, respectively. Therefore, expressions
The subtract-with-carry engine is one of the family of generators which includes as well add-with-carry and subtract-with-borrow engines.