继续在Android中重新生成不同的随机数

时间:2015-07-10 11:22:10

标签: java android loops random

我正在制作适用于Android的应用,我需要一个号码,每次调用它时都会随机变化。

但是,如果我这样做:

Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7; 

并使用rndNum几次,每次都保持相同的随机生成数字。

有没有办法继续重新生成随机数?

2 个答案:

答案 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; 
}