Class BasePRNGStandalone

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected byte[] buffer
      A temporary buffer to serve random bytes.
      protected boolean initialised
      Indicate if this instance has already been initialised or not.
      protected String name
      The canonical name prefix of the PRNG algorithm.
      protected int ndx
      The index into buffer of where the next byte will come from.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected BasePRNGStandalone​(String name)
      Trivial constructor for use by concrete subclasses.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void addRandomByte​(byte b)
      Supplement, or possibly replace, the random state of this PRNG with a random byte.
      void addRandomBytes​(byte[] buffer)
      Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.
      void addRandomBytes​(byte[] buffer, int offset, int length)
      Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.
      Object clone()
      Returns a clone copy of this instance.
      abstract void fillBlock()  
      void init​(Map<String,​byte[]> attributes)
      Initialises the pseudo-random number generator scheme with the appropriate attributes.
      boolean isInitialised()  
      String name()
      Returns the canonical name of this instance.
      byte nextByte()
      Returns the next 8 bits of random data generated from this instance.
      void nextBytes​(byte[] out)  
      void nextBytes​(byte[] out, int offset, int length)
      Fills the designated byte array, starting from byte at index offset, for a maximum of length bytes with the output of this generator instance.
      abstract void setup​(Map<String,​byte[]> attributes)  
    • Field Detail

      • name

        protected final String name
        The canonical name prefix of the PRNG algorithm.
      • initialised

        protected volatile boolean initialised
        Indicate if this instance has already been initialised or not.
      • buffer

        protected volatile byte[] buffer
        A temporary buffer to serve random bytes.
      • ndx

        protected int ndx
        The index into buffer of where the next byte will come from.
    • Constructor Detail

      • BasePRNGStandalone

        protected BasePRNGStandalone​(String name)

        Trivial constructor for use by concrete subclasses.

        Parameters:
        name - the canonical name of this instance.
    • Method Detail

      • name

        public String name()
        Description copied from interface: IRandomStandalone

        Returns the canonical name of this instance.

        Specified by:
        name in interface IRandomStandalone
        Returns:
        the canonical name of this instance.
      • init

        public void init​(Map<String,​byte[]> attributes)
        Description copied from interface: IRandomStandalone

        Initialises the pseudo-random number generator scheme with the appropriate attributes.

        Specified by:
        init in interface IRandomStandalone
        Parameters:
        attributes - a set of name-value pairs that describe the desired future instance behaviour.
      • nextByte

        public byte nextByte()
                      throws IllegalStateException
        Description copied from interface: IRandomStandalone

        Returns the next 8 bits of random data generated from this instance.

        Specified by:
        nextByte in interface IRandomStandalone
        Returns:
        the next 8 bits of random data generated from this instance.
        Throws:
        IllegalStateException - if the instance is not yet initialised. theoretical limit for generating non-repetitive pseudo-random data.
      • nextBytes

        public void nextBytes​(byte[] out,
                              int offset,
                              int length)
                       throws IllegalStateException
        Description copied from interface: IRandomStandalone

        Fills the designated byte array, starting from byte at index offset, for a maximum of length bytes with the output of this generator instance.

        Specified by:
        nextBytes in interface IRandomStandalone
        Parameters:
        out - the placeholder to contain the generated random bytes.
        offset - the starting index in out to consider. This method does nothing if this parameter is not within 0 and out.length.
        length - the maximum number of required random bytes. This method does nothing if this parameter is less than 1.
        Throws:
        IllegalStateException - if the instance is not yet initialised. theoretical limit for generating non-repetitive pseudo-random data.
      • addRandomByte

        public void addRandomByte​(byte b)
        Description copied from interface: IRandomStandalone

        Supplement, or possibly replace, the random state of this PRNG with a random byte.

        Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an UnsupportedOperationException.

        Specified by:
        addRandomByte in interface IRandomStandalone
        Parameters:
        b - The byte to add.
      • addRandomBytes

        public void addRandomBytes​(byte[] buffer)
        Description copied from interface: IRandomStandalone

        Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.

        Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an UnsupportedOperationException.

        Specified by:
        addRandomBytes in interface IRandomStandalone
        Parameters:
        buffer - The buffer of new random bytes to add.
      • addRandomBytes

        public void addRandomBytes​(byte[] buffer,
                                   int offset,
                                   int length)
        Description copied from interface: IRandomStandalone

        Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.

        Implementations are not required to implement this method in any meaningful way; this may be a no-operation, and implementations may throw an UnsupportedOperationException.

        Specified by:
        addRandomBytes in interface IRandomStandalone
        Parameters:
        buffer - The buffer of new random bytes to add.
        offset - The offset from whence to begin reading random bytes.
        length - The number of random bytes to add.
      • isInitialised

        public boolean isInitialised()
      • setup

        public abstract void setup​(Map<String,​byte[]> attributes)
      • fillBlock

        public abstract void fillBlock()