Class JDKRandomBridge

  • All Implemented Interfaces:
    java.io.Serializable

    public final class JDKRandomBridge
    extends java.util.Random
    Subclass of Random that delegates to a RestorableUniformRandomProvider instance but will otherwise rely on the base class for generating all the random types.

    Legacy applications coded against the JDK's API could use this subclass of Random in order to replace its linear congruential generator by any RandomSource.

    Caveat: Use of this class is not recommended for new applications. In particular, there is no guarantee that the serialized form of this class will be compatible across (even minor) releases of the library.

    Since:
    1.0
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      JDKRandomBridge​(RandomSource source, java.lang.Object seed)
      Creates a new instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected int next​(int n)
      Delegates the generation of 32 random bits to the RandomSource argument provided at construction.
      private void readObject​(java.io.ObjectInputStream input)  
      void setSeed​(long seed)
      private void writeObject​(java.io.ObjectOutputStream output)  
      • Methods inherited from class java.util.Random

        doubles, doubles, doubles, doubles, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serializable version identifier.
        See Also:
        Constant Field Values
      • isInitialized

        private final transient boolean isInitialized
        Workaround JDK's "Random" bug: https://bugs.openjdk.java.net/browse/JDK-8154225.
    • Constructor Detail

      • JDKRandomBridge

        public JDKRandomBridge​(RandomSource source,
                               java.lang.Object seed)
        Creates a new instance.
        Parameters:
        source - Source of randomness.
        seed - Seed. Can be null.
    • Method Detail

      • setSeed

        public void setSeed​(long seed)
        Overrides:
        setSeed in class java.util.Random
      • next

        protected int next​(int n)
        Delegates the generation of 32 random bits to the RandomSource argument provided at construction. The returned value is such that if the source of randomness is RandomSource.JDK, all the generated values will be identical to those produced by the same sequence of calls on a Random instance initialized with the same seed.
        Overrides:
        next in class java.util.Random
        Parameters:
        n - Number of random bits which the requested value must contain.
        Returns:
        the value represented by the n high-order bits of a pseudo-random 32-bits integer.
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream output)
                          throws java.io.IOException
        Parameters:
        output - Output stream.
        Throws:
        java.io.IOException - if an error occurs.
      • readObject

        private void readObject​(java.io.ObjectInputStream input)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Parameters:
        input - Input stream.
        Throws:
        java.io.IOException - if an error occurs.
        java.lang.ClassNotFoundException - if an error occurs.