import java.util.Random;
import java.util.Arrays;
import java.util.Comparator;
class MyComparator implements Comparator
{
public int compare(Object o1, Object o2)
{
Number n1 = (Number) o1;
Number n2 = (Number) o2;
if(n1.jump > n2.jump)
{
return 1;
}
else if(n1.jump < n2.jump)
{
return -1;
}
else
{
return 0;
}
}
}
class Number
{
public double i;
public int pos;
public double jump = 0;
public Random r = new Random();
public Number(int pos)
{
this.pos = pos;
i = r.nextInt();
}
}
public class Temp
{
public static void main(String[] args)
{
Number[] n = new Number[50];
double total = 0;
for(int i=0; i<50; i++)
{
n[i] = new Number(i);
total += n[i].i;
}
for(int i=0; i<50; i++)
{
n[i].jump = n[i].i/total;
}
Arrays.sort(n, new MyComparator());
for(int i=0; i<50; i++)
{
System.out.print(n[i].pos + ", ");
}
System.out.println();
for(int i=0; i<50; i++)
{
n[i].jump = n[i].i/total;
n[i].jump = 1-n[i].jump;
}
Arrays.sort(n, new MyComparator());
for(int i=0; i<50; i++)
{
System.out.print(n[i].pos + ", ");
}
System.out.println();
}
}
oranını yapmak , atlama olasılık uygunluktur i, Numara sınıf bireysel sınıf olduğunu söylemek Ebeveyn olarak seçilme. İlk önce, daha önce olduğu gibi ebeveyn olarak seçilme olasılığını hesaplıyoruz. Bu aşamada, daha yüksek uygunluk daha yüksek bir olasılık elde edecektir. Daha sonra, olasılık 1'den çıkarırız. Bu, daha düşük bir zindelikle daha yüksek bir zindelik verir (seçim için sözde zindelik). Şimdi olasılığı yeniden hesaplayın. Bak, varlığın sırası tamamen tersine döndü.
Gerçek yaşam problemi için MAX_FITNESS değerini MIN_FITNESS gibi bilmeniz pek olası değildir. – user
Sabit belirten kapaklar kullanmamalıydım. Rulet çarkı için maxFitness, mevcut jenerasyonun maksimum zindeliğidir, çünkü rulet çarkı/piyango büyüklüğü mevcut nesil sporların toplamıdır. –