2013-04-23 54 views
3

我想設置我的活動,以便我可以從我的onCreate方法之外的方法生成一組隨機數。這裏是我的活動是如何設置的?在oncreate方法之外生成一個隨機數

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.optionOne(); 
    this.optionTwo(); 
    this.optionThree(); 
} 

public void optionOne() { 
    // generate a random number here 
    int random = Math.random(); 

    // generate more random numbers and do more stuff here 
} 

問題是,我產生onCreate方法之外的任何隨機數被認爲是「靜態」和數字總是0。如果我生成的onCreate內的數字方法,它當然工作得很好。我怎樣才能解決這個問題?

+0

的Math.random()返回0.0到1.0,如果你把它叫做「廉政」,它會跌落小數把它留給是0. – wtsang02 2013-04-23 03:47:14

+0

@ wtsang02 - 實際上我在做Math.random(max_value),我只是刪除了我的額外數字來簡化示例。雖然,你的其他答案解決了我的問題!謝謝:) – dharris001 2013-04-23 03:51:08

回答

2
private static Random ranGenerator=new Random(); 

將其聲明爲類的成員。
然後隨時撥打ranGenerator.nextInt()得到它。

+0

謝謝!你讓我非常頭痛。 – dharris001 2013-04-23 03:49:36

0

使用

Random rand = new Random(); 
int random = rand.nextInt(); 

int random = rand.nextInt(range); 

根據文檔here

Math.random() Returns a pseudo-random double n, where n >= 0.0 && n < 1.0. 
1

要生成的隨機數的使用,這將創造之間特定範圍內的隨機

public void optionOne() { 
    var=(int)(Math.random() * (max - min) + min) //math.random will return integer values 
    // use your var wisely 
} 
0

這將幫助你創建非重複的隨機數的數組列表

ArrayList<Integer> indexArray = new ArrayList<Integer>(); 
    for (i = 0; i < 202; ++i) { 
       number.add(i); 
       // number.add(num); 
      } 
      Collections.shuffle(number);