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).
- Since:
- 3.3
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static RandomUtils
private static RandomUtils
private static final ThreadLocal
<SecureRandom> private static RandomUtils
-
Constructor Summary
ConstructorsModifierConstructorDescriptionDeprecated.TODO Make private in 4.0.private
RandomUtils
(Supplier<Random> random) -
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.(package private) Random
random()
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).private long
randomLong
(long n) Generates along
value between 0 (inclusive) and the specified 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.(package private) static SecureRandom
static RandomUtils
Gets the singleton instance based onSecureRandom.getInstanceStrong()
which uses an algorithms/providers specified in thesecurerandom.strongAlgorithms
Security
property.toString()
-
Field Details
-
INSECURE
-
SECURE
-
SECURE_STRONG_SUPPLIER
-
SECURE_STRONG
-
SECURE_RANDOM_STRONG
-
random
-
-
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.
-
RandomUtils
-
-
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:
-
secureRandom
-
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:
-
random
Random random() -
randomBoolean
public boolean randomBoolean()Generates a random boolean value.- Returns:
- the random boolean
- Since:
- 3.16.0
-
randomBytes
public byte[] randomBytes(int count) 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
public double randomDouble()Generates a random double between 0 (inclusive) and Double.MAX_VALUE (exclusive).- Returns:
- the random double
- Since:
- 3.16.0
- See Also:
-
randomDouble
public double randomDouble(double startInclusive, double endExclusive) 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
public float randomFloat()Generates a random float between 0 (inclusive) and Float.MAX_VALUE (exclusive).- Returns:
- the random float
- Since:
- 3.16.0
- See Also:
-
randomFloat
public float randomFloat(float startInclusive, float endExclusive) 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
public int randomInt()Generates a random int between 0 (inclusive) and Integer.MAX_VALUE (exclusive).- Returns:
- the random integer
- Since:
- 3.16.0
- See Also:
-
randomInt
public int randomInt(int startInclusive, int endExclusive) 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
public long randomLong()Generates a random long between 0 (inclusive) and Long.MAX_VALUE (exclusive).- Returns:
- the random long
- Since:
- 3.16.0
- See Also:
-
randomLong
private long randomLong(long n) Generates along
value between 0 (inclusive) and the specified value (exclusive).- Parameters:
n
- Bound on the random number to be returned. Must be positive.- Returns:
- a random
long
value between 0 (inclusive) andn
(exclusive).
-
randomLong
public long randomLong(long startInclusive, long endExclusive) 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
-