sub choose { my $self = shift; my $f = rand(1.0); my $sum = 0.0; foreach my $individual (@{$self->{INDIVIDUALS}}) { $sum += $individual->{FITNESS}; return $individual if $sum >= $f; } die "can't select an individual"; }