|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object
|
+--physis.core.random.Randomness
|
+--physis.core.random.MersenneTwister
This work is based on version MT199937 (99/10/29) of the Mersenne Twister algorithm found at * The Mersenne Twister Home Page.
This is a Java version of the C-program for MT19937: Integer version. The MT19937 algorithm was created by Makoto Matsumoto and Takuji Nishimura, who ask: "When you use this, send an email to: matumoto@math.keio.ac.jp with an appropriate reference to your work". Indicate that this is a translation of their algorithm into Java.
Reference. Makato Matsumoto and Takuji Nishimura, "Mersenne Twister: A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3--30.
Changes Since V3: Slight modification to the coin flip algorithms ensures that 0.0 and 1.0 probabilities always return false and true.
The MersenneTwister code is based on standard MT19937 C/C++ code by Takuji Nishimura, with suggestions from Topher Cooper and Marc Rieffel, July 1997. The code was originally translated into Java by Michael Lecuyer, January 1999, and is Copyright (c) 1999 by Michael Lecuyer. The included license is as follows:
The basic algorithmic work of this library (appearing in nextInt() and setSeed()) is free software; you can redistribute it and or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Just like java.util.Random, this generator accepts a long seed but doesn't use all of it. java.util.Random uses 48 bits. The Mersenne Twister instead uses 32 bits (int size). So it's best if your seed does not exceed the int range.
| Field Summary | |
private static long |
DEFAULT_SEED
|
private static int |
LOWER_MASK
|
private static int |
M
|
private int[] |
mag01
|
private static int |
MATRIX_A
|
private int[] |
mt
|
private int |
mti
|
private static int |
N
|
private static int |
TEMPERING_MASK_B
|
private static int |
TEMPERING_MASK_C
|
private static int |
UPPER_MASK
|
| Constructor Summary | |
MersenneTwister()
Constructor using the default seed. |
|
MersenneTwister(long seed)
Constructor using a given seed. |
|
| Method Summary | |
static void |
main(java.lang.String[] args)
Tests the code. |
int |
next(int bits)
Returns an integer with bits bits filled with a random number. |
void |
setSeed(long seed)
Initalize the pseudo random number generator. |
void |
setSeedOld(long seed)
Initalize the pseudo random number generator. |
| Methods inherited from class physis.core.random.Randomness |
nextBoolean, nextBoolean, nextByte, nextBytes, nextDouble, nextFloat, nextInt, nextInt, nextLong, raw |
| Methods inherited from class java.lang.Object |
|
| Field Detail |
private static final int N
private static final int M
private static final int MATRIX_A
private static final int UPPER_MASK
private static final int LOWER_MASK
private static final int TEMPERING_MASK_B
private static final int TEMPERING_MASK_C
private int[] mt
private int mti
private int[] mag01
private static final long DEFAULT_SEED
| Constructor Detail |
public MersenneTwister()
public MersenneTwister(long seed)
| Method Detail |
public void setSeedOld(long seed)
public final void setSeed(long seed)
public final int next(int bits)
next in class Randomnesspublic static void main(java.lang.String[] args)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||