最近在开发中需要随机生成指定位数的随机数,想起来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
0306通过比较两端代码可以发现唯一不一样的地方就是在创建random时是否指定了种子。没有指定种子的random每次都是随机的,而指定种子以后变成了固定值。
所以建议在需要随机生成随机数字时,不要指定种子。