среда, 7 мая 2008 г.

Кодирование списком

В данном представлении ген - это число из диапазона от 0 до 1, а параметр - это значение из списка некоторой длины.

// Код на С

#define Round(x) ((x)>=0?(long) ((x)+0.5):(long)((x)-0.5))

#define gen2par_list(gen,list,cnt) (list[gen2ind(gen,cnt)])

int inline gen2ind(double gen, int cnt)
{
int res ;
res = Round(gen*(cnt-1)) ;
res = (res>=(cnt-1)?cnt-1:res) ;
res = (res<0?0:res) ;
return res ;
}