2015-07-10 152 views
2

我正在为Android创建一个应用程序,并且我需要一个数字,每当我打电话时它都会随机更改。继续在Android中重新生成不同的随机数

但是,如果我这样做:

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

,并使用rndNum几次,它仍然每次都在同随机生成的数字。

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

+1

使用'Random'不意味着你总是会得到不同的数,即可以同样的数字。如果你想要一个唯一的一个使用[UUID](http://developer.android.com/reference/java/util/UUID.html) – hrskrs

+0

不,我一直按下生成该数字的按钮,甚至在10次数仍然是相同的数字。 –

+0

请显示应该生成数字的整个方法以及按钮如何调用该方法。 – Manu

回答

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; 
} 
+1

你说得对。 @ ely-shaffir在'rndNum'变量中生成一个随机数,并始终读取此变量值而不刷新其值。每次他/她按下按钮时,伊利都必须在“rndNum”中生成新的随机数。 –