2010-04-23 53 views
0

我有一組X個項目,例如{鼓風機,割草機,爐子},每個項目都有一定的比例應該從整個集合中選擇{鼓風機= 25%,割草機= 25%,爐= 75%}以及這些項目應遵循的特定分佈(在選擇開始時應多選擇鼓風機,在最後選擇更多的鼓風機)。我們給出了一些要整體選擇的對象(即100),以及一個總體時間(例如100秒)。從給定分配中選擇項目

我正在考慮使用輪盤算法,其中輪子上的重量受當前分佈影響作爲經過時間(和允許持續時間)的函數,以便可以使用簡單函數來確定重量。對於任何人都知道的問題,是否有共同的方法?

目前我已經在java中使用類似於x^2的函數(對權重進行了正確的歸一化)來編程類似於此的東西,以確保良好的分佈發生。其他建議或常見做法將受到歡迎:-)

+2

首先,你的概率加起來爲125%。其次,如何指定選擇過程中的項目分佈? – 2010-04-23 23:36:41

回答

0

您的問題描述不完全清楚,但我會盡力回答我的理解。首先,您可以通過執行以下操作從加權分佈中選擇一個隨機項:

  1. 找到所有可能的對象的權重總和,我們將調用wsum。
  2. 選擇一個隨機數,a。
  3. 初始化累計變量,總數爲0.0。
  4. 從第一個可能的對象(權重> 0.0)開始,將權重添加到總數。
  5. 如果一個< total/wsum,這個數字被選中,我們從可能的對象列表中刪除它,並從wsum中減去它的權重。
  6. 如果我們選擇了足夠的對象,繼續,否則轉到步驟2

它有助於有降序排列,以提高操作的速度稍微有點權重排序的對象。

這只是爲了找到我們從當前分佈中選擇哪個對象。這聽起來像你的分佈隨時間而變化,所以你只需要改變隨着時間選擇的可能對​​象列表。

相關問題