Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Better combination formula

  • Loading branch information...
commit 635b2ad075fa0c2d11f57f817e944abfbcf442ed 1 parent 044a8b6
@sipa authored
Showing with 19 additions and 7 deletions.
  1. +19 −7 combine.pl
View
26 combine.pl
@@ -5,29 +5,41 @@
sub loadFile {
my ($file) = @_;
my %ret;
- my $min = 100000000;
+ my $max = 0;
open FILE,$file;
while (<FILE>) {
my ($addr,$p2h,$p8h,$p1d,$p1w,$p1m) = split(/\s+/,$_);
if ($p1m =~ /\A([1-9.]+)%\Z/) {
- my $x = log($1*0.01)/log(0.5);
- $min=$x if ($x < $min);
+ my $x = $1*0.01;
+ $max=$x if ($x > $max);
$ret{$addr} = $x;
}
}
for my $k (keys %ret) {
- $ret{$k} -= $min;
+ $ret{$k} /= $max;
}
close FILE;
return \%ret;
}
+sub merge {
+ my ($a,$b) = @_;
+ return 1-(1-$a)*(1-$b);
+}
+
sub combine {
my ($f1,$f2) = @_;
my %ret;
for my $k1 (keys %{$f1}) {
if (defined $f2->{$k1}) {
- $ret{$k1} = $f1->{$k1} + $f2->{$k1};
+ $ret{$k1} = merge($f1->{$k1}, $f2->{$k1});
+ } else {
+ $ret{$k1} = merge($f1->{$k1}, 0);
+ }
+ }
+ for my $k2 (keys %{$f2}) {
+ if (!defined $f1->{$k2}) {
+ $ret{$k2} = merge(0, $f2->{$k2});
}
}
return \%ret;
@@ -45,9 +57,9 @@ sub combine {
$n++;
}
-for my $addr (sort { $res->{$a} <=> $res->{$b} } (keys %{$res})) {
+for my $addr (sort { $res->{$b} <=> $res->{$a} } (keys %{$res})) {
if ($addr =~ /\A(\d+)\.(\d+)\.(\d+)\.(\d+):8333/) {
my $a = $1*0x1000000 + $2*0x10000 + $3*0x100 + $4;
- printf "0x%08x %s %g%%\n",$a,$addr,exp(log(0.5)*$res->{$addr}/$n)*100;
+ printf "0x%08x %s %g%%\n",$a,$addr,(1-((1-$res->{$addr}) ** (1/$n)))*100;
}
}
Please sign in to comment.
Something went wrong with that request. Please try again.