Subtract with carry
This article may be too technical for most readers to understand. Please help improve it to make it understandable to non-experts, without removing the technical details. (July 2013) (Learn how and when to remove this template message)
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:
Constants S and R are known as the short and long lags, respectively. Therefore, expressions and correspond to the S-th and R-th previous terms of the sequence. S and R satisfy the condition . Modulus M has the value , where W is the word size, in bits, of the state sequence and .