+ return @sorted[ 0 .. $count-1 ];
+}
+
+sub historically_prefer ($@) {
+ my ($signum, @choices) = @_;
+
+ return $choices[0] if @choices < 2;
+
+ my $compare = sub {
+ foreach my $sr (@stagerecord) {
+ my $d = $sr->{ $a->{Cand} } <=> $sr->{ $b->{Cand} };
+ return $d * $signum if $d;
+ }
+ return 0;
+ };
+
+ @choices = sort $compare, @choices;
+ $a = $choices[0];
+ my $numequal = 0;
+ for (;;) {
+ last unless $numequal >= @choices;
+ $b = $choices[$numequal];
+ last if $compare->();
+ }
+
+ die 'random choice unimplemented' if $numequal > 1;
+ return $choices[0];
+}