我想编写代码,为每个按顺序递减的数字提供累积概率(0-1)。例如;
我有一组号码:
150
152
155
160
175
我会以这种方式给出这些数字:
对于第一个(150)概率是= 175 /总和
第二个是= 160 / totalsum +之前的概率....依此类推。
主要观点是150将有更高的概率。
你对我有什么建议? Set将包含超过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;
}
答案 0 :(得分:0)
您的问题是您没有在Sol_list的所有访问中使用已排序的索引。这个错了:
Sol_list[PopulationSize-1-minus]
应该说:
Sol_list[sortindex[PopulationSize-1-minus]]