2011-08-24 120 views
1

我想編寫一個代碼,它給出每個按順序遞減的數字的累積概率(0-1)。例如;數字遞減的遞增概率

我有一組數的:

150 
    152 
    155 
    160 
    175 

我會給這些數字以這種方式的概率:對第一個

(150)的概率是= 175 /總和

第二個是= 160 /總數+以前的概率....等等。

主要觀點是150比其他人有更高的概率。

你會給我什麼建議。集將包含超過30個號碼...

下面是代碼:

int ll; 
float prefitness=0;//Previous fittnesses 
int minus =0; 
for (int sdf=0;sdf<PopulationSize;sdf++)//population size is the total number counts 
{ 
    ll=sortindex[sdf];//sortindex is an array with numbers in ascending order 
    Sol_list[ll].fittness=(double)Sol_list[PopulationSize-1-minus].PortfolioDuration/sum+prefitness; 
    prefitness=Sol_list[ll].fittness; 
    minus++; 
} 
float move=0; 
int xc; 
for (int yj=0;yj<PopulationSize;yj++) 
{ 
    xc=sortindex[yj]; 
    Sol_list[xc].fittnesspre =move; 
    move=Sol_list[xc].fittness; 
} 
+1

你的問題太簡單了..你解析設置一次得到的金額,然後你分析它的第二次和創建矢量與概率。還是你期望的其他答案? –

+0

是的,它很簡單。我有一個代碼。有時如果數字太接近,概率值也太接近,有些數字不遵守規則(升序數字,下降概率,不解決問題。雖然差異很小,但它影響解決方案。也許它是由於四捨五入錯誤或smt。我問這個簡單的問題的原因是chech我是否正在做它的權利...謝謝 – furkan

+0

如果您希望我們知道您的現有代碼是否正確,那麼您必須發佈您的代碼! – john

回答

0

你的問題是,你不使用Sol_list的所有訪問的排序索引。這一個是錯誤的:

Sol_list[PopulationSize-1-minus] 

應該說:

Sol_list[sortindex[PopulationSize-1-minus]] 
+0

非常感謝。我的問題解決了。 – furkan

+0

非常歡迎 –

+0

ISTM不需要額外的變量減去。它應該和sdf一樣。 –