package rabbitescape.engine.util;
/**
* A predictable random number generator - we don't care about its quality -
* we just don't want it to change if e.g. the Java library is updated.
*
* Algorithm is due to Marsaglia: the MWC (multiply with carry) algorithm.
* http://www.codeproject.com/Articles/25172/Simple-Random-Number-Generation
*/
public class VariantGenerator
{
private int seed_z;
private int seed_w;
public VariantGenerator( int seed )
{
this.seed_z = seed;
this.seed_w = 3463;
}
public int next( int i )
{
seed_z = 36969 * ( seed_z & 65535 ) + ( seed_z >> 16 );
seed_w = 18000 * ( seed_w & 65535 ) + ( seed_w >> 16 );
return ( ( seed_z << 16 ) + seed_w ) % i;
}
}