public BigInteger Evaluate(BigInteger x) { var aPart = A * x; var sumPart = aPart + B; var result = ModHelper.GetPositiveMod(sumPart, M); return(result); }
/// <summary> /// Creates a new linear congruential generator of the form /// f(x) = a*x + b (mod m) /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <param name="m"></param> public LCG(BigInteger a, BigInteger b, BigInteger m) { if (m <= 0) { throw new ArgumentException("m must be a positive integer"); } A = ModHelper.GetPositiveMod(a, m); B = ModHelper.GetPositiveMod(b, m); M = m; }