Author: nextgens
Date: 2007-06-30 23:18:55 +0000 (Sat, 30 Jun 2007)
New Revision: 13851

Modified:
   trunk/freenet/src/org/spaceroots/mantissa/random/MersenneTwister.java
Log:
indent

Modified: trunk/freenet/src/org/spaceroots/mantissa/random/MersenneTwister.java
===================================================================
--- trunk/freenet/src/org/spaceroots/mantissa/random/MersenneTwister.java       
2007-06-30 16:52:34 UTC (rev 13850)
+++ trunk/freenet/src/org/spaceroots/mantissa/random/MersenneTwister.java       
2007-06-30 23:18:55 UTC (rev 13851)
@@ -68,193 +68,187 @@
  * @version $Id: MersenneTwister.java,v 1.1 2005/02/07 23:03:14 amphibian Exp $

  */
-public class MersenneTwister
-  extends Random {
-
+public class MersenneTwister extends Random {
        private static final long serialVersionUID = -1;
-       
-  /** Creates a new random number generator.
-   * <p>The instance is initialized using the current time as the
-   * seed.</p>
-   */
-  public MersenneTwister() {
-    mt = new int[N];
-    setSeed(System.currentTimeMillis());
-  }

-  /** Creates a new random number generator using a single int seed.
-   * @param seed the initial seed (32 bits integer)
-   */
-  public MersenneTwister(int seed) {
-    mt = new int[N];
-    setSeed(seed);
-  }
+       private static final int   N     = 624;
+       private static final int   M     = 397;
+       private static final int[] MAG01 = { 0x0, 0x9908b0df };

-  /** Creates a new random number generator using an int array seed.
-   * @param seed the initial seed (32 bits integers array), if null
-   * the seed of the generator will be related to the current time
-   */
-  public MersenneTwister(int[] seed) {
-    mt = new int[N];
-    setSeed(seed);
-  }
+       private int[] mt;
+       private int   mti;

-  /** Seed from byte[] */
-  public MersenneTwister(byte[] seed) {
-       mt = new int[N];
-       setSeed(seed);
-  }
-  
-  /** Creates a new random number generator using a single long seed.
-   * @param seed the initial seed (64 bits integer)
-   */
-  public MersenneTwister(long seed) {
-    mt = new int[N];
-    setSeed(seed);
-  }
+       /** Creates a new random number generator.
+        * <p>The instance is initialized using the current time as the
+        * seed.</p>
+        */
+       public MersenneTwister() {
+               mt = new int[N];
+               setSeed(System.currentTimeMillis());
+       }

-  /** Reinitialize the generator as if just built with the given int seed.
-   * <p>The state of the generator is exactly the same as a new
-   * generator built with the same seed.</p>
-   * @param seed the initial seed (32 bits integer)
-   */
-  public void setSeed(int seed) {
-    // we use a long masked by 0xffffffffL as a poor man unsigned int
-    long longMT = seed;
-    mt[0]= (int) longMT;
-    for (mti = 1; mti < N; ++mti) {
-      // See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier.
-      // initializer from the 2002-01-09 C version by Makoto Matsumoto
-      longMT = (1812433253l * (longMT ^ (longMT >> 30)) + mti) & 0xffffffffL; 
-      mt[mti]= (int) longMT;
-    }
-  }
+       /** Creates a new random number generator using a single int seed.
+        * @param seed the initial seed (32 bits integer)
+        */
+       public MersenneTwister(int seed) {
+               mt = new int[N];
+               setSeed(seed);
+       }

-  /**
-   * Seed from byte[].
-   */
-  public void setSeed(byte[] seed) {
-         int[] seeds = new int[seed.length/4];
-         for(int i=0;i<seeds.length;i+=4) {
-                 seeds[i] = Fields.bytesToInt(seed, i);
-         }
-         setSeed(seeds);
-  }
-  
-  /** Reinitialize the generator as if just built with the given int array 
seed.
-   * <p>The state of the generator is exactly the same as a new
-   * generator built with the same seed.</p>
-   * @param seed the initial seed (32 bits integers array), if null
-   * the seed of the generator will be related to the current time
-   */
-  public void setSeed(int[] seed) {
+       /** Creates a new random number generator using an int array seed.
+        * @param seed the initial seed (32 bits integers array), if null
+        * the seed of the generator will be related to the current time
+        */
+       public MersenneTwister(int[] seed) {
+               mt = new int[N];
+               setSeed(seed);
+       }

-    if (seed == null) {
-      setSeed(System.currentTimeMillis());
-      return;
-    }
+       /** Seed from byte[] */
+       public MersenneTwister(byte[] seed) {
+               mt = new int[N];
+               setSeed(seed);
+       }

-    setSeed(19650218);
-    int i = 1;
-    int j = 0;
+       /** Creates a new random number generator using a single long seed.
+        * @param seed the initial seed (64 bits integer)
+        */
+       public MersenneTwister(long seed) {
+               mt = new int[N];
+               setSeed(seed);
+       }

-    for (int k = Math.max(N, seed.length); k != 0; k--) {
-      long l0 = (mt[i] & 0x7fffffffl)   | ((mt[i]   < 0) ? 0x80000000l : 0x0l);
-      long l1 = (mt[i-1] & 0x7fffffffl) | ((mt[i-1] < 0) ? 0x80000000l : 0x0l);
-      long l  = (l0 ^ ((l1 ^ (l1 >> 30)) * 1664525l)) + seed[j] + j; // non 
linear
-      mt[i]   = (int) (l & 0xffffffffl);
-      i++; j++;
-      if (i >= N) {
-        mt[0] = mt[N - 1];
-        i = 1;
-      }
-      if (j >= seed.length) {
-        j = 0;
-      }
-    }
+       /** Reinitialize the generator as if just built with the given int seed.
+        * <p>The state of the generator is exactly the same as a new
+        * generator built with the same seed.</p>
+        * @param seed the initial seed (32 bits integer)
+        */
+       public void setSeed(int seed) {
+               // we use a long masked by 0xffffffffL as a poor man unsigned 
int
+               long longMT = seed;
+               mt[0]= (int) longMT;
+               for (mti = 1; mti < N; ++mti) {
+                       // See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier.
+                       // initializer from the 2002-01-09 C version by Makoto 
Matsumoto
+                       longMT = (1812433253l * (longMT ^ (longMT >> 30)) + 
mti) & 0xffffffffL; 
+                       mt[mti]= (int) longMT;
+               }
+       }

-    for (int k = N - 1; k != 0; k--) {
-      long l0 = (mt[i] & 0x7fffffffl)   | ((mt[i]   < 0) ? 0x80000000l : 0x0l);
-      long l1 = (mt[i-1] & 0x7fffffffl) | ((mt[i-1] < 0) ? 0x80000000l : 0x0l);
-      long l  = (l0 ^ ((l1 ^ (l1 >> 30)) * 1566083941l)) - i; // non linear
-      mt[i]   = (int) (l & 0xffffffffL);
-      i++;
-      if (i >= N) {
-        mt[0] = mt[N - 1];
-        i = 1;
-      }
-    }
+       /**
+        * Seed from byte[].
+        */
+       public void setSeed(byte[] seed) {
+               int[] seeds = new int[seed.length/4];
+               for(int i=0;i<seeds.length;i+=4) {
+                       seeds[i] = Fields.bytesToInt(seed, i);
+               }
+               setSeed(seeds);
+       }

-    mt[0] = 0x80000000; // MSB is 1; assuring non-zero initial array
+       /** Reinitialize the generator as if just built with the given int 
array seed.
+        * <p>The state of the generator is exactly the same as a new
+        * generator built with the same seed.</p>
+        * @param seed the initial seed (32 bits integers array), if null
+        * the seed of the generator will be related to the current time
+        */
+       public void setSeed(int[] seed) {
+               if (seed == null) {
+                       setSeed(System.currentTimeMillis());
+                       return;
+               }

-  }
+               setSeed(19650218);
+               int i = 1;
+               int j = 0;

-  /** Reinitialize the generator as if just built with the given long seed.
-   * <p>The state of the generator is exactly the same as a new
-   * generator built with the same seed.</p>
-   * @param seed the initial seed (64 bits integer)
-   */
-  public void setSeed(long seed) {
-    if (mt == null) {
-      // this is probably a spurious call from base class constructor,
-      // we do nothing and wait for the setSeed in our own
-      // constructors after array allocation
-      return;
-    }
-    setSeed(new int[] { (int) (seed >>> 32), (int) (seed & 0xffffffffl) });
-  }
+               for (int k = Math.max(N, seed.length); k != 0; k--) {
+                       long l0 = (mt[i] & 0x7fffffffl)   | ((mt[i]   < 0) ? 
0x80000000l : 0x0l);
+                       long l1 = (mt[i-1] & 0x7fffffffl) | ((mt[i-1] < 0) ? 
0x80000000l : 0x0l);
+                       long l  = (l0 ^ ((l1 ^ (l1 >> 30)) * 1664525l)) + 
seed[j] + j; // non linear
+                       mt[i]   = (int) (l & 0xffffffffl);
+                       i++; j++;
+                       if (i >= N) {
+                               mt[0] = mt[N - 1];
+                               i = 1;
+                       }
+                       if (j >= seed.length) {
+                               j = 0;
+                       }
+               }

-  /** Generate next pseudorandom number.
-   * <p>This method is the core generation algorithm. As per
-   * <code>java.util.Random</code> contract, it is used by all the
-   * public generation methods for the various primitive types {@link
-   * #nextBoolean nextBoolean}, {@link #nextBytes nextBytes}, {@link
-   * #nextDouble nextDouble}, {@link #nextFloat nextFloat}, {@link
-   * #nextGaussian nextGaussian}, {@link #nextInt nextInt} and {@link
-   * #nextLong nextLong}.</p>
-   * @param bits number of random bits to produce
-   */
-  protected int next(int bits) {
+               for (int k = N - 1; k != 0; k--) {
+                       long l0 = (mt[i] & 0x7fffffffl)   | ((mt[i]   < 0) ? 
0x80000000l : 0x0l);
+                       long l1 = (mt[i-1] & 0x7fffffffl) | ((mt[i-1] < 0) ? 
0x80000000l : 0x0l);
+                       long l  = (l0 ^ ((l1 ^ (l1 >> 30)) * 1566083941l)) - i; 
// non linear
+                       mt[i]   = (int) (l & 0xffffffffL);
+                       i++;
+                       if (i >= N) {
+                               mt[0] = mt[N - 1];
+                               i = 1;
+                       }
+               }

-    int y;
+               mt[0] = 0x80000000; // MSB is 1; assuring non-zero initial array

-    if (mti >= N) { // generate N words at one time
-      int mtNext = mt[0];
-      for (int k = 0; k < N - M; ++k) {
-        int mtCurr = mtNext;
-        mtNext = mt[k + 1];
-        y = (mtCurr & 0x80000000) | (mtNext & 0x7fffffff);
-        mt[k] = mt[k + M] ^ (y >>> 1) ^ MAG01[y & 0x1];
-      }
-      for (int k = N - M; k < N - 1; ++k) {
-        int mtCurr = mtNext;
-        mtNext = mt[k + 1];
-        y = (mtCurr & 0x80000000) | (mtNext & 0x7fffffff);
-        mt[k] = mt[k + (M - N)] ^ (y >>> 1) ^ MAG01[y & 0x1];
-      }
-      y = (mtNext & 0x80000000) | (mt[0] & 0x7fffffff);
-      mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ MAG01[y & 0x1];
+       }

-      mti = 0;
-    }
-  
-    y = mt[mti++];
+       /** Reinitialize the generator as if just built with the given long 
seed.
+        * <p>The state of the generator is exactly the same as a new
+        * generator built with the same seed.</p>
+        * @param seed the initial seed (64 bits integer)
+        */
+       public void setSeed(long seed) {
+               if (mt == null) {
+                       // this is probably a spurious call from base class 
constructor,
+                       // we do nothing and wait for the setSeed in our own
+                       // constructors after array allocation
+                       return;
+               }
+               setSeed(new int[] { (int) (seed >>> 32), (int) (seed & 
0xffffffffl) });
+       }

-    // tempering
-    y ^= (y >>> 11);
-    y ^= (y <<   7) & 0x9d2c5680;
-    y ^= (y <<  15) & 0xefc60000;
-    y ^= (y >>> 18);
+       /** Generate next pseudorandom number.
+        * <p>This method is the core generation algorithm. As per
+        * <code>java.util.Random</code> contract, it is used by all the
+        * public generation methods for the various primitive types {@link
+        * #nextBoolean nextBoolean}, {@link #nextBytes nextBytes}, {@link
+        * #nextDouble nextDouble}, {@link #nextFloat nextFloat}, {@link
+        * #nextGaussian nextGaussian}, {@link #nextInt nextInt} and {@link
+        * #nextLong nextLong}.</p>
+        * @param bits number of random bits to produce
+        */
+       protected int next(int bits) {
+               int y;

-    return y >>> (32 - bits);
+               if (mti >= N) { // generate N words at one time
+                       int mtNext = mt[0];
+                       for (int k = 0; k < N - M; ++k) {
+                               int mtCurr = mtNext;
+                               mtNext = mt[k + 1];
+                               y = (mtCurr & 0x80000000) | (mtNext & 
0x7fffffff);
+                               mt[k] = mt[k + M] ^ (y >>> 1) ^ MAG01[y & 0x1];
+                       }
+                       for (int k = N - M; k < N - 1; ++k) {
+                               int mtCurr = mtNext;
+                               mtNext = mt[k + 1];
+                               y = (mtCurr & 0x80000000) | (mtNext & 
0x7fffffff);
+                               mt[k] = mt[k + (M - N)] ^ (y >>> 1) ^ MAG01[y & 
0x1];
+                       }
+                       y = (mtNext & 0x80000000) | (mt[0] & 0x7fffffff);
+                       mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ MAG01[y & 0x1];

-  }
+                       mti = 0;
+               }

-  private static final int   N     = 624;
-  private static final int   M     = 397;
-  private static final int[] MAG01 = { 0x0, 0x9908b0df };
+               y = mt[mti++];

-  private int[] mt;
-  private int   mti;
+               // tempering
+               y ^= (y >>> 11);
+               y ^= (y <<   7) & 0x9d2c5680;
+               y ^= (y <<  15) & 0xefc60000;
+               y ^= (y >>> 18);

+               return y >>> (32 - bits);
+       }
 }


Reply via email to