java.lang.Random误区


最近在开发中需要随机生成指定位数的随机数,想起来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每次都是随机的,而指定种子以后变成了固定值。

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

你可能感兴趣的:(java,Random,误区)