コード例 #1
0
ファイル: LCG.cs プロジェクト: erjicles/AdventOfCode2019
        public BigInteger Evaluate(BigInteger x)
        {
            var aPart   = A * x;
            var sumPart = aPart + B;
            var result  = ModHelper.GetPositiveMod(sumPart, M);

            return(result);
        }
コード例 #2
0
ファイル: LCG.cs プロジェクト: erjicles/AdventOfCode2019
 /// <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;
 }