2015-04-07 16 views
0

我知道random()方法與我應該確定的固定整數一起使用。然而,我的需要是使用一個參數相同的功能,我的意思是我現在還沒有的一個整數,但它會在運行時確定。 這裏是我的代碼:如何使用不帶固定整數的參數的隨機方法?

button1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Random r1 = new Random(); 
      num1 = r1.nextInt(z); 

      if (num1 < z) {    
       //do something 

      } else { 

       //do other thing 
      } 

     } 
    }); 

z是它在運行時確定的參數。

回答

0

我不太確定你想在這裏發生什麼。你想要在運行時定義的範圍內生成一個隨機數嗎?或者你想動態地播種RNG?在運行時定義

受案範圍:

您當前的代碼應工作。這裏的文檔:

nextInt(int n) 
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. 

案例動態種子:

帶z構建Random對象爲這樣:

Random r1 = new Random(z); 

而且,其中的Z值是從哪裏來的?

+0

我想你的第二溶液中的隨機Z號「隨機R1 =新的隨機(Z);」但它顯示IllegalArgumentException。 z一個數據庫元素的計數,它是一個未知數,在運行時它會計算指定列中元素(問題)的數量,並將隨機顯示一個問題。用戶可以添加問題到數據庫,所以我不知道有多少問題是我使用參數的原因。 – AndroDev

+0

啊。然後嘗試使用種子時間初始化RNG,然後使用nextInt(z)從問題列表中隨機選擇一個問題。 z是什麼數據類型? –

0

出的Javadoc:https://docs.oracle.com/javase/8/docs/api/java/util/Random.html

公衆詮釋nextInt(INT結合)

返回一個僞隨機均勻分佈的int值介於0(含)和指定值(不包括),從該隨機數得出發電機的順序。 nextInt的一般合約是指定範圍內的一個int值僞隨機生成並返回。所有可能的int值都以(近似)相等的概率產生。

if (num1 < z) 

永遠不會雷伊的其他人,因爲它會在埃夫裏辛格運河一如既往。 z只是給出了你的隨機值的上限,但是它是唯一的,所以它永遠不會被達到。

0

我試着理解你的問題。我假設你在運行時需要一個隨機的z值。 如果是這樣的話,則:

int z = (int) (System.currentTimeMillis() % 100); 
    Random r1 = new Random(); 
    int num1 = r1.nextInt(z); 

它將產生從0到99

+0

z不是一個隨機值。 z是一個未知數的數據庫元素的計數,在運行時,它將計算指定列中元素(問題)的數量,並將隨機顯示一個問題。用戶可以添加問題到數據庫,所以我不知道有多少問題是我使用參數的原因。 – AndroDev