2014-04-16 60 views
-1

我有3張圖片,我想要生成隨機數。有一組數字,最小值爲0,最大值爲9.隨機數字只產生一次,但不會再次產生。在3個不同的圖像上生成隨機數

代碼...

int r; 
int min_ran=0; 
int max_ran=9; 

random.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      r = ran.nextInt(max_ran - min_ran + 1) + min_ran; 
      img1.setImageResource(images[image1+1]); 
      img2.setImageResource(images[image1-1]); 
      img3.setImageResource(images[(image1+1)*1]); 
     } 
    }); 

請幫

+2

ok。 'r'是你的隨機數,但你正在訪問'images [image1 + 1]'。你在哪裏使用隨機數? - >嘗試'圖像[r + 1]'如果你有隨機數字在圖像上顯示它們,你需要一個自定義的圖像視圖,或在它們之上的文本視圖,然後你發佈你的圖像數。 – damian

+0

你試圖做的事情不是很清楚'img1.setImageResource(images [image1 + 1]); img2.setImageResource(images [image1-1]); img3.setImageResource(images [(image1 + 1)* 1]);''img3'與'img1'相同。你也可以使用'r = ran.nextInt(10);'如果你想從0-9生成隨機數 – majk

+0

你到底想做什麼?隨機選擇3個圖像資源? – Terry

回答

0

使用此功能選擇3個圖像隨機(在範圍從0到9)

random.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     img1.setImageResource(images[ran.nextInt(10)]); 
     img2.setImageResource(images[ran.nextInt(10)]); 
     img3.setImageResource(images[ran.nextInt(10)]); 
    } 
} 
+0

謝謝。它的工作現在。 – Meghs

+0

不客氣。享受編碼 – majk

+0

這可能會給你相同的數字,導致有兩次相同的圖像。我假設你不想要這個,請看下面的答案。 – Terry

0

我猜你想設置3將不同的圖像資源添加到您的3張圖像中,並從名爲images[]的圖像資源數組中選擇它們。要隨機選擇3個互不相同的圖像,可以這樣做:

private Random randomGenerator = new Random(); 

random.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     int firstIndex = randomGenerator.nextInt(10); 
     int secondIndex = newDifferentRandomNumber(firstIndex); 
     int thirdIndex = newDifferentRandomNumber(firstIndex, secondIndex); 
     img1.setImageResource(images[firstIndex]); 
     img2.setImageResource(images[secondIndex]); 
     img3.setImageResource(images[thirdIndex]); 
    } 
}); 

/** 
* Generates a new random number that is different from the given one. 
*/ 
private int newDifferentRandomNumber(int number) { 
    // generate a random int between 0 and 9 
    int newDifferentRandomNumber = randomGenerator.nextInt(10); 
    // check if it is equal to the given number, if yes repeat recursively 
    if (newDifferentRandomNumber == number) { 
     newDifferentRandomNumber = newDifferentRandomNumber(number); 
    } 
    return newDifferentRandomNumber; 
} 

/** 
* Generates a new random number that is different from the 2 given ones. 
*/ 
private int newDifferentRandomNumber(int oneNumber, int anotherNumber) { 
    // generate a random int between 0 and 9 
    int newDifferentRandomNumber = randomGenerator.nextInt(10); 
    // check if it is equal to one of the given numbers, 
    // if yes repeat recursively 
    if (newDifferentRandomNumber == number 
      || newDifferentRandomNumber == anotherNumber) { 
     newDifferentRandomNumber = newDifferentRandomNumber(number); 
    } 
    return newDifferentRandomNumber; 
}