package com.imsl.test.example.stat; import com.imsl.stat.*; import java.io.*; /** *

Generates a pseudorandom sequence using the Mersenne Twister.

* * @see Code * @see Output */ public class MersenneTwisterEx1 { public static void main(String args[]) throws Exception { int nr = 4; double[] r = new double[nr]; int s = 123457; /* Initialize MersenneTwister with a seed */ MersenneTwister mt1 = new MersenneTwister(s); MersenneTwister mt2 = (MersenneTwister) mt1.clone(); /* Save the state of MersenneTwister */ FileOutputStream fos = new FileOutputStream("mt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(mt1); oos.close(); fos.close(); Random rndm = new Random(mt1); /* Get the next five random numbers */ for (int k = 0; k < nr; k++) { r[k] = rndm.nextDouble(); } System.out.println(" First Stream Output"); System.out.println(r[0] + " " + r[1] + " " + r[2] + " " + r[3]); /* Check the cloned copy against the original */ Random rndm2 = new Random(mt2); for (int k = 0; k < nr; k++) { r[k] = rndm2.nextDouble(); } System.out.println("\n Clone Stream Output"); System.out.println(r[0] + " " + r[1] + " " + r[2] + " " + r[3]); /* Check the serialized copy against the original */ FileInputStream fis = new FileInputStream("mt"); ObjectInputStream ois = new ObjectInputStream(fis); mt2 = (MersenneTwister) ois.readObject(); Random rndm3 = new Random(mt2); for (int k = 0; k < nr; k++) { r[k] = rndm3.nextDouble(); } System.out.println("\n Serialized Stream Output"); System.out.println(r[0] + " " + r[1] + " " + r[2] + " " + r[3]); } }