Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 继续在Android中重新生成不同的随机数_Java_Android_Loops_Random - Fatal编程技术网

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

Java 继续在Android中重新生成不同的随机数,java,android,loops,random,Java,Android,Loops,Random,我正在为Android制作一个应用程序,我需要一个号码,每次我打电话时它都会随机变化 但是,如果我这样做: Random r = new Random(); // makes random r public int rndNum = r.nextInt(1000) + 7; 并多次使用rndNum,每次随机生成的数字保持不变 有没有办法继续重新生成随机数?可以尝试SecureRandom类: 初始化成本很高,但您可以在应用程序启动时初始化SecureRandom一次,然后继续使用它。由于没有

我正在为Android制作一个应用程序,我需要一个号码,每次我打电话时它都会随机变化

但是,如果我这样做:

Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7; 
并多次使用
rndNum
,每次随机生成的数字保持不变


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

可以尝试SecureRandom类:


初始化成本很高,但您可以在应用程序启动时初始化SecureRandom一次,然后继续使用它。

由于没有发布上下文代码,我无法验证这一点,但我非常确定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; 
}

使用
Random
并不意味着您总是会得到不同的数字,也可以是相同的数字。如果你想要一个唯一的,请使用“否”,我一直按生成数字的按钮,即使按了10次,它仍然是相同的数字。请说明生成数字的整个方法以及按钮如何调用。无需,在@Jaydeep Gadhia的回答中找到了解决方案。你是对的@ely shaffir在
rndNum
变量中生成一个随机数,并始终读取此变量值而不刷新其值。Ely必须在每次按下按钮时生成新的随机数。