No.  I was referring to the specific use of random number generators to
generate an ephemeral random matrix.  I prefer to hash the element location
in order to generate the element value than to use a random number generator
seeded by the element location.  These are formally equivalent but
practically quite different since hash functions are often designed with
fast startup and PRNG's are often designed without much regard to startup or
reseeding cost.  MersenneTwister in particular is a very bad generator with
respect to the cost of reseeding.  Murmurhash is a very good example of a
lean hash function.

On Fri, May 20, 2011 at 7:25 PM, Lance Norskog (JIRA) <[email protected]>wrote:

>
> Ted, you mentioned wanting a MurmurHash Random class. Is this what you
> envisioned? (It is not finished code; see below).
>
> {code}
> public class MurmurHashRandom extends Random {
>  private long murmurSeed;
>  private final ByteBuffer buf;
>
>  public MurmurHashRandom() {
>    this(0);
>  }
>
>  public MurmurHashRandom(int seed) {
>    SeedGenerator gen = new FastRandomSeedGenerator();
>    byte[] bits = RandomUtils.longSeedtoBytes(gen.generateSeed());
>    buf = ByteBuffer.wrap(bits);
>    this.murmurSeed = MurmurHash.hash64A(bits, seed);
>  }
>
>  @Override
>  public long nextLong() {
>    long oldSeed = murmurSeed;
>    murmurSeed = MurmurHash.hash64A(buf, (int) murmurSeed);
>    return oldSeed;
>  }
>
> {code}
>
>

Reply via email to