On this page

RandomUtils

public class org.apache.commons.lang3.RandomUtils[source]

Supplements the standard Random class.

Use #secure() to get the singleton instance based on SecureRandom#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#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).

See also:
Since:

3.3

Constructors

RandomUtils()

Deprecated. RandomUtils instances should NOT be constructed in standard programming.

@Deprecated public RandomUtils()[source]

Deprecated: TODO Make private in 4.0.

RandomUtils instances should NOT be constructed in standard programming. Instead, the class should be used as RandomUtils.nextBytes(5);.

This constructor is public to permit tools that require a JavaBean instance to operate.

Methods

insecure()

Gets the singleton instance based on ThreadLocalRandom#current(); which is not cryptographically secure; for more secure processing use #secure() or #secureStrong().

nextBoolean()

Deprecated. Generates a random boolean value.

nextBytes(int)

Deprecated. Generates an array of random bytes.

nextDouble()

Deprecated. Generates a random double between 0 (inclusive) and Double#MAX_VALUE (1.7976931348623157E308 exclusive).

nextDouble(double, double)

Deprecated. Generates a random double within the specified range.

nextFloat()

Deprecated. Generates a random float between 0 (inclusive) and Float#MAX_VALUE (3.4028235E38f exclusive).

nextFloat(float, float)

Deprecated. Generates a random float within the specified range.

nextInt()

Deprecated. Generates a random int between 0 (inclusive) and Integer#MAX_VALUE (2147483647 exclusive).

nextInt(int, int)

Deprecated. Generates a random integer within the specified range.

nextLong()

Deprecated. Generates a random long between 0 (inclusive) and Long#MAX_VALUE (9223372036854775807L exclusive).

nextLong(long, long)

Deprecated. Generates a random long within the specified range.

randomBoolean()

Generates a random boolean value.

randomBytes(int)

Generates an array of random bytes.

randomDouble()

Generates a random double between 0 (inclusive) and Double#MAX_VALUE (1.7976931348623157E308 exclusive).

randomDouble(double, double)

Generates a random double within the specified range.

randomFloat()

Generates a random float between 0 (inclusive) and Float.MAX_VALUE (exclusive).

randomFloat(float, float)

Generates a random float within the specified range.

randomInt()

Generates a random int between 0 (inclusive) and Integer#MAX_VALUE (2147483647 exclusive).

randomInt(int, int)

Generates a random integer within the specified range.

randomLong()

Generates a random long between 0 (inclusive) and Long#MAX_VALUE (9223372036854775807L, exclusive).

randomLong(long, long)

Generates a random long within the specified range.

secure()

Gets the singleton instance based on SecureRandom#SecureRandom() which uses the default algorithm and provider of SecureRandom.

secureStrong()

Gets the singleton instance based on SecureRandom#getInstanceStrong() which uses an algorithms/providers specified in the securerandom.strongAlgorithms Security property.

toString()

public static RandomUtils insecure()[source]

Gets the singleton instance based on ThreadLocalRandom#current(); which is not cryptographically secure; for more secure processing use #secure() or #secureStrong().

The method ThreadLocalRandom#current() is called on-demand.

Returns:

The singleton instance based on ThreadLocalRandom#current().

See also:
Since:

3.17.0

@Deprecated public static boolean nextBoolean()[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random boolean value.

Returns:

The random boolean.

Since:

3.5

@Deprecated public static byte[] nextBytes(int count)[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates an array of random bytes.

Parameters:

count – The size of the returned array.

Returns:

The random byte array.

Throws:

java.lang.IllegalArgumentException – Thrown if count is negative.

@Deprecated public static double nextDouble()[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random double between 0 (inclusive) and Double#MAX_VALUE (1.7976931348623157E308 exclusive).

Returns:

The random double.

See also:

#nextDouble(double, double)

Since:

3.5

@Deprecated public static double nextDouble(double startInclusive, double endExclusive)[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random double within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random double.

@Deprecated public static float nextFloat()[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random float between 0 (inclusive) and Float#MAX_VALUE (3.4028235E38f exclusive).

Returns:

The random float.

See also:

#nextFloat(float, float)

Since:

3.5

@Deprecated public static float nextFloat(float startInclusive, float endExclusive)[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random float within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random float.

@Deprecated public static int nextInt()[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random int between 0 (inclusive) and Integer#MAX_VALUE (2147483647 exclusive).

Returns:

The random integer.

See also:

#nextInt(int, int)

Since:

3.5

@Deprecated public static int nextInt(int startInclusive, int endExclusive)[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random integer within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random integer.

@Deprecated public static long nextLong()[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random long between 0 (inclusive) and Long#MAX_VALUE (9223372036854775807L exclusive).

Returns:

The random long.

See also:

#nextLong(long, long)

Since:

3.5

@Deprecated public static long nextLong(long startInclusive, long endExclusive)[source]

Deprecated: Use #secure(), #secureStrong(), or #insecure().

Generates a random long within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random long.

public boolean randomBoolean()[source]

Generates a random boolean value.

Returns:

The random boolean.

Since:

3.16.0

public byte[] randomBytes(int count)[source]

Generates an array of random bytes.

Parameters:

count – The size of the returned array.

Returns:

The random byte array.

Throws:

java.lang.IllegalArgumentException – Thrown if count is negative.

Since:

3.16.0

public double randomDouble()[source]

Generates a random double between 0 (inclusive) and Double#MAX_VALUE (1.7976931348623157E308 exclusive).

Returns:

The random double.

See also:

#randomDouble(double, double)

Since:

3.16.0

public double randomDouble(double startInclusive, double endExclusive)[source]

Generates a random double within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random double.

Since:

3.16.0

public float randomFloat()[source]

Generates a random float between 0 (inclusive) and Float.MAX_VALUE (exclusive).

Returns:

The random float.

See also:

#randomFloat(float, float)

Since:

3.16.0

public float randomFloat(float startInclusive, float endExclusive)[source]

Generates a random float within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random float.

Since:

3.16.0

public int randomInt()[source]

Generates a random int between 0 (inclusive) and Integer#MAX_VALUE (2147483647 exclusive).

Returns:

The random integer.

See also:

#randomInt(int, int)

Since:

3.16.0

public int randomInt(int startInclusive, int endExclusive)[source]

Generates a random integer within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random integer.

Since:

3.16.0

public long randomLong()[source]

Generates a random long between 0 (inclusive) and Long#MAX_VALUE (9223372036854775807L, exclusive).

Returns:

The random long.

See also:

#randomLong(long, long)

Since:

3.16.0

public long randomLong(long startInclusive, long endExclusive)[source]

Generates a random long within the specified range.

Parameters:
  • startInclusive – The smallest value that can be returned, must be non-negative.

  • endExclusive – The upper bound (not included).

Throws:

java.lang.IllegalArgumentException – Thrown if startInclusive > endExclusive or if startInclusive is negative.

Returns:

The random long.

Since:

3.16.0

public static RandomUtils secure()[source]

Gets the singleton instance based on SecureRandom#SecureRandom() which uses the default algorithm and provider of SecureRandom.

The method SecureRandom#SecureRandom() is called on-demand.

Returns:

The singleton instance based on SecureRandom#SecureRandom().

See also:

SecureRandom#SecureRandom()

Since:

3.16.0

public static RandomUtils secureStrong()[source]

Gets the singleton instance based on SecureRandom#getInstanceStrong() which uses an algorithms/providers specified in the securerandom.strongAlgorithms Security property.

The method SecureRandom#getInstanceStrong() is called on-demand.

Returns:

The singleton instance based on SecureRandom#getInstanceStrong().

See also:

SecureRandom#getInstanceStrong()

Since:

3.17.0

@Override public String toString()[source]