Replace % inside loop of Random ctor (dotnet/coreclr#7156)
authorchrisaut <chrisaut@users.noreply.github.com>
Tue, 13 Sep 2016 14:58:06 +0000 (21:58 +0700)
committerJan Vorlicek <janvorli@microsoft.com>
Tue, 13 Sep 2016 14:58:06 +0000 (16:58 +0200)
Commit migrated from https://github.com/dotnet/coreclr/commit/73ce68fd483595410e0d04d5a134e74998acc3b9

src/coreclr/src/mscorlib/src/System/Random.cs

index adede6a..b8ff967 100644 (file)
@@ -52,7 +52,7 @@ namespace System {
       }
     
       public Random(int Seed) {
-        int ii;
+        int ii = 0;
         int mj, mk;
     
         //Initialize our Seed array.
@@ -61,7 +61,7 @@ namespace System {
         SeedArray[55]=mj;
         mk=1;
         for (int i=1; i<55; i++) {  //Apparently the range [1..55] is special (Knuth) and so we're wasting the 0'th position.
-          ii = (21*i)%55;
+          if ((ii += 21) >= 55) ii -= 55;
           SeedArray[ii]=mk;
           mk = mj - mk;
           if (mk<0) mk+=MBIG;
@@ -69,8 +69,10 @@ namespace System {
         }
         for (int k=1; k<5; k++) {
           for (int i=1; i<56; i++) {
-        SeedArray[i] -= SeedArray[1+(i+30)%55];
-        if (SeedArray[i]<0) SeedArray[i]+=MBIG;
+            int n = i + 30; 
+            if (n >= 55) n -= 55; 
+            SeedArray[i] -= SeedArray[1 + n];        
+            if (SeedArray[i]<0) SeedArray[i]+=MBIG;
           }
         }
         inext=0;