拥有代随机数的类:
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;
}
但代数总是一样的。有什么问题?
答案 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
永远不是真正的随机。