我想编写代码,为每个递减的数字赋予累积概率(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;
}

最佳答案

您的问题是您没有在Sol_list的所有访问权限中使用排序索引。这是错误的:

Sol_list[PopulationSize-1-minus]


应该说:

Sol_list[sortindex[PopulationSize-1-minus]]

10-08 01:34