最近在开发中需要随机生成指定位数的随机数,想起来random类有一个误区,再次写出来让大家在开发中避免犯类似的错误。

在java中对于Random类想必大家都知道是用来产生随机数的,但是稍有不慎就可能出现错误。

例如:

public static void main(String[] args) {        Random random = new Random();        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));            }

这段代码用来生成5个10以内的随机数,运行可以发现每次的值都不同。

跟下边这段代码比较:

public static void main(String[] args) {        Random random = new Random(10);        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));        System.err.println(random.nextInt(10));            }

通过多次运行你可以发现每次的结果都是一样的,在我电脑上每次的结果都是

3

0
3
0
6

通过比较两端代码可以发现唯一不一样的地方就是在创建random时是否指定了种子。没有指定种子的random每次都是随机的,而指定种子以后变成了固定值。

所以建议在需要随机生成随机数字时,不要指定种子。