Class RandomUtils
Random
class.
Use secure()
to get the singleton instance based on SecureRandom()
which uses a secure random number generator implementing the
default random number algorithm.
Use secureStrong()
to get the singleton instance based on SecureRandom.getInstanceStrong()
which uses an instance that was selected by using
the algorithms/providers specified in the securerandom.strongAlgorithms
Security
property.
Use insecure()
to get the singleton instance based on ThreadLocalRandom.current()
which is not cryptographically secure. In addition,
instances do not use a cryptographically random seed unless the system property java.util.secureRandomSeed
is set to
true
.
Starting in version 3.17.0, the method secure()
uses SecureRandom()
instead of SecureRandom.getInstanceStrong()
, and
adds secureStrong()
.
Starting in version 3.16.0, this class uses secure()
for static methods and adds insecure()
.
Starting in version 3.15.0, this class uses SecureRandom.getInstanceStrong()
for static methods.
Before version 3.15.0, this class used ThreadLocalRandom.current()
for static methods, which is not cryptographically secure.
Please note that the Apache Commons project provides a component dedicated to pseudo-random number generation, namely Commons RNG, that may be a better choice for applications with more stringent requirements (performance and/or correctness).
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic RandomUtils
insecure()
Gets the singleton instance based onThreadLocalRandom.current()
; which is not cryptographically secure; usesecure()
to use an algorithms/providers specified in thesecurerandom.strongAlgorithms
Security
property.static boolean
Deprecated.static byte[]
nextBytes
(int count) Deprecated.static double
Deprecated.static double
nextDouble
(double startInclusive, double endExclusive) Deprecated.static float
Deprecated.static float
nextFloat
(float startInclusive, float endExclusive) Deprecated.static int
nextInt()
Deprecated.static int
nextInt
(int startInclusive, int endExclusive) Deprecated.static long
nextLong()
Deprecated.static long
nextLong
(long startInclusive, long endExclusive) Deprecated.boolean
Generates a random boolean value.byte[]
randomBytes
(int count) Generates an array of random bytes.double
Generates a random double between 0 (inclusive) and Double.MAX_VALUE (exclusive).double
randomDouble
(double startInclusive, double endExclusive) Generates a random double within the specified range.float
Generates a random float between 0 (inclusive) and Float.MAX_VALUE (exclusive).float
randomFloat
(float startInclusive, float endExclusive) Generates a random float within the specified range.int
Generates a random int between 0 (inclusive) and Integer.MAX_VALUE (exclusive).int
randomInt
(int startInclusive, int endExclusive) Generates a random integer within the specified range.long
Generates a random long between 0 (inclusive) and Long.MAX_VALUE (exclusive).long
randomLong
(long startInclusive, long endExclusive) Generates a random long within the specified range.static RandomUtils
secure()
Gets the singleton instance based onSecureRandom()
which uses an algorithms/providers specified in thesecurerandom.strongAlgorithms
Security
property.static RandomUtils
Gets the singleton instance based onSecureRandom.getInstanceStrong()
which uses an algorithms/providers specified in thesecurerandom.strongAlgorithms
Security
property.toString()
-
Constructor Details
-
RandomUtils
Deprecated.TODO Make private in 4.0.RandomUtils
instances should NOT be constructed in standard programming. Instead, the class should be used asRandomUtils.nextBytes(5);
.This constructor is public to permit tools that require a JavaBean instance to operate.
-
-
Method Details
-
insecure
Gets the singleton instance based onThreadLocalRandom.current()
; which is not cryptographically secure; usesecure()
to use an algorithms/providers specified in thesecurerandom.strongAlgorithms
Security
property.The method
ThreadLocalRandom.current()
is called on-demand.- Returns:
- the singleton instance based on
ThreadLocalRandom.current()
. - Since:
- 3.17.0
- See Also:
-
nextBoolean
Deprecated.Generates a random boolean value.- Returns:
- the random boolean
- Since:
- 3.5
-
nextBytes
Deprecated.Generates an array of random bytes.- Parameters:
count
- the size of the returned array- Returns:
- the random byte array
- Throws:
IllegalArgumentException
- ifcount
is negative
-
nextDouble
Deprecated.Generates a random double between 0 (inclusive) and Double.MAX_VALUE (exclusive).- Returns:
- the random double
- Since:
- 3.5
- See Also:
-
nextDouble
Deprecated.Generates a random double within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random double
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative
-
nextFloat
Deprecated.Generates a random float between 0 (inclusive) and Float.MAX_VALUE (exclusive).- Returns:
- the random float
- Since:
- 3.5
- See Also:
-
nextFloat
Deprecated.Generates a random float within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random float
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative
-
nextInt
Deprecated.Generates a random int between 0 (inclusive) and Integer.MAX_VALUE (exclusive).- Returns:
- the random integer
- Since:
- 3.5
- See Also:
-
nextInt
Deprecated.Generates a random integer within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random integer
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative
-
nextLong
Deprecated.Generates a random long between 0 (inclusive) and Long.MAX_VALUE (exclusive).- Returns:
- the random long
- Since:
- 3.5
- See Also:
-
nextLong
Deprecated.Generates a random long within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random long
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative
-
secure
Gets the singleton instance based onSecureRandom()
which uses an algorithms/providers specified in thesecurerandom.strongAlgorithms
Security
property.The method
SecureRandom()
is called on-demand.- Returns:
- the singleton instance based on
SecureRandom()
. - Since:
- 3.16.0
- See Also:
-
secureStrong
Gets the singleton instance based onSecureRandom.getInstanceStrong()
which uses an algorithms/providers specified in thesecurerandom.strongAlgorithms
Security
property.The method
SecureRandom.getInstanceStrong()
is called on-demand.- Returns:
- the singleton instance based on
SecureRandom.getInstanceStrong()
. - Since:
- 3.17.0
- See Also:
-
randomBoolean
Generates a random boolean value.- Returns:
- the random boolean
- Since:
- 3.16.0
-
randomBytes
Generates an array of random bytes.- Parameters:
count
- the size of the returned array- Returns:
- the random byte array
- Throws:
IllegalArgumentException
- ifcount
is negative- Since:
- 3.16.0
-
randomDouble
Generates a random double between 0 (inclusive) and Double.MAX_VALUE (exclusive).- Returns:
- the random double
- Since:
- 3.16.0
- See Also:
-
randomDouble
Generates a random double within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random double
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative- Since:
- 3.16.0
-
randomFloat
Generates a random float between 0 (inclusive) and Float.MAX_VALUE (exclusive).- Returns:
- the random float
- Since:
- 3.16.0
- See Also:
-
randomFloat
Generates a random float within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random float
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative
-
randomInt
Generates a random int between 0 (inclusive) and Integer.MAX_VALUE (exclusive).- Returns:
- the random integer
- Since:
- 3.16.0
- See Also:
-
randomInt
Generates a random integer within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random integer
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative- Since:
- 3.16.0
-
randomLong
Generates a random long between 0 (inclusive) and Long.MAX_VALUE (exclusive).- Returns:
- the random long
- Since:
- 3.16.0
- See Also:
-
randomLong
Generates a random long within the specified range.- Parameters:
startInclusive
- the smallest value that can be returned, must be non-negativeendExclusive
- the upper bound (not included)- Returns:
- the random long
- Throws:
IllegalArgumentException
- ifstartInclusive > endExclusive
or ifstartInclusive
is negative- Since:
- 3.16.0
-
toString
-