// New rng from existing rng public Sha1Generator(final Sha1Generator parent, final int spawnnumber) { final byte[] seedstate = new byte[4]; seedstate[0] = (byte) (LOWBYTE & (spawnnumber >>> 24)); seedstate[1] = (byte) (LOWBYTE & (spawnnumber >>> 16)); seedstate[2] = (byte) (LOWBYTE & (spawnnumber >>> 8)); seedstate[3] = (byte) (LOWBYTE & (spawnnumber)); final Sha1Compiler sha1 = new Sha1Compiler(); sha1.hash(parent.state, 20); sha1.hash(seedstate, 4); sha1.digest(state); }
// Return next random number public final int nextrand() { int d; final Sha1Compiler sha1 = new Sha1Compiler(); sha1.hash(state, 20); sha1.digest(state); return POS_MASK & (((LOWBYTE & (int) state[16]) << 24) | ((LOWBYTE & (int) state[17]) << 16) | ((LOWBYTE & (int) state[18]) << 8) | ((LOWBYTE & (int) state[19]))); }
// new rng from seed public Sha1Generator(final int seedarg) { final byte[] seedstate = new byte[20]; for (int i = 0; i < 16; i++) { seedstate[i] = 0; } seedstate[16] = (byte) (LOWBYTE & (seedarg >>> 24)); seedstate[17] = (byte) (LOWBYTE & (seedarg >>> 16)); seedstate[18] = (byte) (LOWBYTE & (seedarg >>> 8)); seedstate[19] = (byte) (LOWBYTE & (seedarg)); final Sha1Compiler sha1 = new Sha1Compiler(); sha1.hash(seedstate, 20); sha1.digest(state); }