我正在制作适用于Android的应用,我需要一个号码,每次调用它时都会随机变化。
但是,如果我这样做:
Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7;
并使用rndNum
几次,每次都保持相同的随机生成数字。
有没有办法继续重新生成随机数?
答案 0 :(得分:2)
也许尝试SecureRandom类:https://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html
初始化费用昂贵,但您可以在启动应用程序时初始化SecureRandom,然后继续使用它。
答案 1 :(得分:1)
由于缺少上传的上下文代码,我无法验证这一点,但我很确定OP正在做类似的事情:
public static class SomeObject {
Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7;
public int getRandomNumber() {
return this.rndNum;
}
}
public static SomeObject obj = new SomeObject();
public static void main(String[] args) throws InterruptedException {
JButton j = new JButton();
...
j.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(obj.getRandomNumber());
}
});
}
这基本上意味着每次按下按钮时都不会生成新的随机数。随机数生成一次并保存为rndNum
。因此,每次按下按钮,都会返回相同的数字。
接受的答案将解决这个问题,但跟踪每个生成的随机数字我感到很浪费。
解决此问题的方法是每次调用方法时更改getRandomNumber
方法以生成随机数:
public int getRandomNumber() {
return new Random().nextInt(1000) + 7;
}