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

Generates a pseudorandom sequence using the Mersenne64 Twister.

* * @see Code * @see Output */ public class MersenneTwister64Ex1 { public static void main(String args[]) throws Exception { long key[] = {0x123L, 0x234L, 0x345L, 0x456L}; int nr = 4; double[] r = new double[nr]; long s = 123457; /* Initialize MersenneTwister64 with a seed */ MersenneTwister64 mt1 = new MersenneTwister64(s); MersenneTwister64 mt2 = (MersenneTwister64) mt1.clone(); /* Save the state of MersenneTwister64 */ 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 = (MersenneTwister64) 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]); } }