我正在为Android创建一个应用程序,并且我需要一个数字,每当我打电话时它都会随机更改。继续在Android中重新生成不同的随机数
但是,如果我这样做:
Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7;
,并使用rndNum
几次,它仍然每次都在同随机生成的数字。
有没有办法继续重新生成随机数?
我正在为Android创建一个应用程序,并且我需要一个数字,每当我打电话时它都会随机更改。继续在Android中重新生成不同的随机数
但是,如果我这样做:
Random r = new Random(); // makes random r
public int rndNum = r.nextInt(1000) + 7;
,并使用rndNum
几次,它仍然每次都在同随机生成的数字。
有没有办法继续重新生成随机数?
也许尝试的SecureRandom类:https://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html
初始化昂贵的,但你可以在你的应用程序的启动初始化一次的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;
}
你说得对。 @ ely-shaffir在'rndNum'变量中生成一个随机数,并始终读取此变量值而不刷新其值。每次他/她按下按钮时,伊利都必须在“rndNum”中生成新的随机数。 –
使用'Random'不意味着你总是会得到不同的数,即可以同样的数字。如果你想要一个唯一的一个使用[UUID](http://developer.android.com/reference/java/util/UUID.html) – hrskrs
不,我一直按下生成该数字的按钮,甚至在10次数仍然是相同的数字。 –
请显示应该生成数字的整个方法以及按钮如何调用该方法。 – Manu