All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.cornell.lassp.houle.RngPack.RandomShuffle Maven / Gradle / Ivy

The newest version!
package edu.cornell.lassp.houle.RngPack;

//
// RngPack 1.1a by Paul Houle
// http://www.honeylocust.com/RngPack/
//

/**
* RandomShuffle uses one random number generator to shuffle the numbers
* produced by another to obliterate sequential correlations.
* To initialize a RandomShuffle,  pass it two RandomElements.  The
* first RandomElement is used to generate a table of random numbers
* and the second is used to choose one from the table.  An example of
* usage is,
*
* 
* RandomElement markov=new RandomShuffle(new Ranecu(),new Ranmar(),32)
* 
* * which would generate a deck of 32 numbers from RANECU and * use RANMAR to choose from the deck. * *
* References: *
    *
  • F. James; Comp. Phys. Comm. 60 (1990) p 329-344 *
  • D. Knuth; The Art of Computer Programming vol. 2, sec 3.2.2 *
* *

* * Source code is available. * * @author Paul Houle (E-mail: [email protected]) * @version 1.1a */ public class RandomShuffle extends RandomElement { RandomElement generatorA,generatorB; int decksize; double deck[]; /** * @param ga generator to fill shuffle deck * @param gb geberator to choose from shuffle deck * @param ds the size of the shuffle deck */ public RandomShuffle(RandomElement ga,RandomElement gb,int ds) { generatorA=ga; generatorB=gb; decksize=ds; stackdeck(); }; /** * The generator. * * @see RandomElement#raw */ public double raw() { double random; int i; i=generatorB.choose(0,decksize-1); random=deck[i]; deck[i]=generatorA.raw(); return random; }; private void stackdeck() { int i; deck = new double[decksize]; for(i=0;i





© 2015 - 2024 Weber Informatics LLC | Privacy Policy