2013-09-24 76 views
0

我得到這個string[]我在這些圖像的網格中使用。網格是隨機生成的。現在我使用更多次添加一個對象的方式。但我的算法重新生成一個,如果兩張圖片是相同的(例如,egg-tree-blackcar-blackcar-pinkcar)將不起作用,因爲我檢查圖像的數組索引。在不添加更多字符串數組的情況下添加概率

String bingoObject[] = { 
    "black_car", 
    "gray_car", 
    "white_car", 
    "red_car", 
    "yellow_car", 
    "blue_car", 
    "pink_car", 
    "green_car", 
    "boat", 
    "tree", 
    //ADDED MORE FOR CHANCES 
    "black_car", 
    "black_car", 
    "gray_car", 
    "white_car", 
    "red_car", 
    "blue_car", 
    "green_car" 
}; 

是否有另一種方式來獲得隨機量和分配概率每個對象,而不必將其多次添加到陣列?這會清理並幫助我處理大量混亂的編碼。

+4

看到http://stackoverflow.com/questions/6737283/加權隨機-java – SamYonnou

回答

0

我個人不知道任何分配概率的方法,但我們可以創建自己的方式。這不是最有效的方式,但它確實產生了僞概率。

 int [] numbers = {1,2,3,4,5,6,7,8,9,10}; 
     int index = 0; 
     Random rnd = new Random(); 

     for (int i = 0; i < 3; i ++) 
     { 
      index = index + rnd.nextInt(numbers.length); 
     } 
     index=index/3; 

     System.out.println(numbers[index]); 

這將扭曲數組索引將接近中間的某個地方,大部分時間。因此,理論上最常見的值將接近數組的中間,而邊界將非常罕見。

您可以將「3」值更改爲任何您想要的值,此值越高,數字應該偏向中間越多。

在運行此10次,我的價值觀是: 2,6,7,2,6,5,6,6,4,5

+0

經歷這個有趣的方式,我會嘗試它。所以通過移動我希望最有可能獲得的物品,我放在StringArray的中間?謝謝! –

相關問題