在Java中生成随机数三种方式比较


在 Java 中生成随机数是一个常见的要求,Java 支持通过ThreadLocalRandom,  java.lang.Mathjava.util.Random类生成随机数。
如果您使用的是Java1.7或更高版本,建议使用ThreadLocalRandom来生成随机数,ThreadLocalRandom应该是您在 Java 中生成随机数的标准方法。在 Java 或任何其他语言中生成随机数时可能有 2 种变体。

  1. 生成没有指定范围的随机数:        ThreadLocalRandom.current().nextInt();
  2. 生成指定范围内的随机数:ThreadLocalRandom.current().nextInt(upperBound);ThreadLocalRandom.current().nextInt(lowerBound, upperBound + 1);

如果您使用的不是 Java 1.7 或更高版本,如使用Java 1.6或更低版本:我们可以使用java.util.Random类在 Java 中生成随机数。如果我们只需要整数或浮点随机值,我们可以使用 Math.random。
如果你只想得到int作为随机数,你应该选择random.nextInt(n),因为这个选项效率更高,偏差更小,Random.nextInt(n)是可重复的。我们可以通过传递相同的种子来创建两个不同的随机对象。
Math.random还需要大约两倍的处理,并且需要同步!是最差选择!