阅读量:86
在Java中,Random 类是一个用于生成伪随机数的工具类。以下是一些关于如何使用 Random 函数的技巧:
-
创建
Random实例:- 你可以直接使用默认构造函数
Random()创建一个Random实例。 - 如果你想指定一个种子(seed)来确保每次生成的随机数序列相同,可以使用构造函数
Random(long seed)。
- 你可以直接使用默认构造函数
-
生成随机整数:
- 使用
nextInt()方法生成一个指定范围内的随机整数。例如,nextInt(int bound)会生成一个在[0, bound)范围内的随机整数。 - 使用
nextInt(int startInclusive, int endExclusive)生成一个在[startInclusive, endExclusive)范围内的随机整数。
- 使用
-
生成随机浮点数:
- 使用
nextFloat()方法生成一个在[0.0, 1.0)范围内的随机浮点数。 - 使用
nextDouble()方法生成一个在[0.0, 1.0)范围内的随机双精度浮点数。
- 使用
-
生成随机布尔值:
- 使用
nextBoolean()方法生成一个随机的布尔值,即true或false。
- 使用
-
生成随机数组:
- 使用
nextInt(int size)或nextDouble(double size)方法生成指定大小的随机整数或浮点数数组。
- 使用
-
生成随机字符:
- 使用
nextInt(int codePointRange)方法生成一个在指定Unicode范围内的随机字符。例如,nextInt(65536)会生成一个ASCII字符(因为ASCII字符的范围是0-127)。
- 使用
-
使用
Random类的方法重写:- 如果你想使用自己的种子而不是系统时间,可以重写
Random类的next方法。
- 如果你想使用自己的种子而不是系统时间,可以重写
-
性能考虑:
- 如果对性能有要求,并且你只需要生成少量的随机数,使用
Random类是合适的。 - 但是,如果你需要生成大量的随机数,并且对性能有严格要求,可以考虑使用
java.util.concurrent.ThreadLocalRandom类,它通常比Random提供更好的性能。
- 如果对性能有要求,并且你只需要生成少量的随机数,使用
-
线程安全:
Random类本身不是线程安全的。如果你在多线程环境中使用同一个Random实例,可能会遇到并发问题。在这种情况下,可以使用ThreadLocalRandom类来代替。
-
其他有用的方法:
nextLong():生成一个指定范围内的随机长整数。nextGaussian():生成一个符合高斯分布的随机双精度浮点数。
记住,Random 类生成的随机数实际上是伪随机数,它们是通过算法生成的,看起来像是随机的,但实际上是可以预测的(如果知道种子的话)。因此,Random 类通常用于测试、模拟和演示目的,而不是用于需要高度安全性的场合。