Class DRand

All Implemented Interfaces:
DoubleFunction, IntFunction, Serializable, Cloneable

public class DRand extends RandomEngine
Quick medium quality uniform pseudo-random number generator. Produces uniformly distributed int's and long's in the closed intervals [Integer.MIN_VALUE,Integer.MAX_VALUE] and [Long.MIN_VALUE,Long.MAX_VALUE], respectively, as well as float's and double's in the open unit intervals (0.0f,1.0f) and (0.0,1.0), respectively.

The seed can be any integer satisfying 0 < 4*seed+1 < 232. In other words, there must hold seed >= 0 invalid input: '&'invalid input: '&' seed < 1073741823.

Quality: This generator follows the multiplicative congruential method of the form

z(i+1) = a * z(i) (mod m) with a=663608941 (=0X278DDE6DL), m=232.
z(i) assumes all different values 0 < 4*seed+1 < m during a full period of 230.

Performance: TO_DO

Implementation: TO_DO

Note that this implementation is not synchronized.

Version:
1.0, 09/24/99
See Also:
  • Field Details

    • current

      private int current
    • DEFAULT_SEED

      public static final int DEFAULT_SEED
      See Also:
  • Constructor Details

    • DRand

      public DRand()
      Constructs and returns a random number generator with a default seed, which is a constant.
    • DRand

      public DRand(int seed)
      Constructs and returns a random number generator with the given seed.
      Parameters:
      seed - should not be 0, in such a case DRand.DEFAULT_SEED is substituted.
    • DRand

      public DRand(Date d)
      Constructs and returns a random number generator seeded with the given date.
      Parameters:
      d - typically new java.util.Date()
  • Method Details

    • nextInt

      public int nextInt()
      Returns a 32 bit uniformly distributed random number in the closed interval [Integer.MIN_VALUE,Integer.MAX_VALUE] (including Integer.MIN_VALUE and Integer.MAX_VALUE).
      Specified by:
      nextInt in class RandomEngine
    • setSeed

      protected void setSeed(int seed)
      Sets the receiver's seed. This method resets the receiver's entire internal state. The following condition must hold: seed >= 0 invalid input: '&'invalid input: '&' seed < (232-1) / 4.
      Parameters:
      seed - if the above condition does not hold, a modified seed that meets the condition is silently substituted.