Class RNG.CustomRandom

java.lang.Object
java.util.Random
squidpony.squidmath.RNG.CustomRandom
All Implemented Interfaces:
Serializable
Enclosing class:
RNG

public static class RNG.CustomRandom
extends Random
A subclass of java.util.Random that uses a RandomnessSource supplied by the user instead of the default.
Author:
Tommy Ettinger
See Also:
Serialized Form
  • Constructor Details

    • CustomRandom

      public CustomRandom()
      Creates a new random number generator. This constructor uses a DiverRNG with a random seed.
    • CustomRandom

      public CustomRandom​(RandomnessSource randomnessSource)
      Creates a new random number generator. This constructor uses the seed of the given RandomnessSource if it has been seeded.
      Parameters:
      randomnessSource - a way to get random bits, supplied by RNG
  • Method Details

    • next

      protected int next​(int bits)
      Generates the next pseudorandom number. Subclasses should override this, as this is used by all other methods.

      The general contract of next is that it returns an int value and if the argument bits is between 1 and 32 (inclusive), then that many low-order bits of the returned value will be (approximately) independently chosen bit values, each of which is (approximately) equally likely to be 0 or 1. The method next is implemented by class Random by atomically updating the seed to

      (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)
      and returning
      (int)(seed >>> (48 - bits)).
      This is a linear congruential pseudorandom number generator, as defined by D. H. Lehmer and described by Donald E. Knuth in The Art of Computer Programming, Volume 3: Seminumerical Algorithms, section 3.2.1.
      Overrides:
      next in class Random
      Parameters:
      bits - random bits
      Returns:
      the next pseudorandom value from this random number generator's sequence
      Since:
      1.1
    • nextLong

      public long nextLong()
      Returns the next pseudorandom, uniformly distributed long value from this random number generator's sequence. The general contract of nextLong is that one long value is pseudorandomly generated and returned.
      Overrides:
      nextLong in class Random
      Returns:
      the next pseudorandom, uniformly distributed long value from this random number generator's sequence