生成随机数java

时间:2013-11-11 19:52:54

标签: java-ee

拥有代随机数的类:

public class RandomNumber {

    public static int getRandomNumber(int n) {
        return new Random().nextInt(n);
    }
}

在我的开关中使用它

public crt createNewCrt() {
        if (RandomNumber.getRandomNumber(4) == 1) {
            switch (RandomNumber.getRandomNumber(4)) {
            case 0:
                /../
            case 1:
                /../

            default:
                break;
            }
        }
        return null;
    }

但代数总是一样的。有什么问题?

4 个答案:

答案 0 :(得分:3)

public class RandomNumber {
    private static Random r = new Random();
    public static int getRandomNumber(int n) {
        return r.nextInt(n);
    }
}

将您的随机生成更改为此。如果您非常快速地实例化两次Random类,它将使用相同的种子并生成相同的数字。如果您将对象保存在静态字段中,那么您将继续从同一种子获取下一个数字,而不是一遍又一遍地获取第一个数字。

答案 1 :(得分:0)

您的交换机开头有一个if语句。只有当随机数== 1时才会调用该开关。您可以删除if语句。

答案 2 :(得分:0)

我不确定你为什么要使用单独的方法。为什么不这样做:

public crt createNewCrt() {
    Random random = new Random();
    int randomNumber = random.nextInt(4);

    switch (randomNumber) {
        case 0:
            /../
        case 1:
            /../

        default:
            break;
    }

    return null;
}

答案 3 :(得分:0)

像这样设置种子的种子

Random r = new Random(System.currentTimeMillis());

因为随机总是基于计算,所以Random永远不是真正的随机。