Subtract with carry

来自testwiki
跳转到导航 跳转到搜索

带进位减法(Subtract-with-carry)是一种时滞斐波那契伪随机数生成器 ,1991年由Template:Tsl与Arif Zaman发明。[1]

算法

带进位减法的算法需用递推关系表示:

x(i)=(x(iS)x(iR)c(i1)) mod M

其中 c(i)={1,if x(iS)x(iR)c(i1)<00,否 则.

常量SR分别称作短时滞与长时滞。[2]SR满足条件0<S<R。 因此,表达式x(iS)x(iR)对应于序列中之前的第S项与第R项。取模操作M的值为M=2W,其中W是状态序列的字(word)的位长度,W>0

带进位的减法与Template:TslTemplate:Tsl为同一族随机数生产引擎。[1]

带进位的减法是C++11标准模板库中的三种随机数生成器之一。[3]

参考文献

Template:Reflist

  1. 1.0 1.1 A New Class of Random Number Generators Template:Wayback, George Marsaglia and Arif Zaman, The Annals of Applied Probability, Vol. 1, No. 3, 1991
  2. subtract_with_carry_engine Class Template:Wayback, Microsoft Visual Studio 2015
  3. std::subtract_with_carry_engine Template:Wayback, cppreference.com