X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=www%2Frating.pl;h=f69b19ac2307a3f9392dadc625f14bfe7b190537;hb=44b0ccfdd1c79b013c72d1a6f71e3bc421f14186;hp=f6aa8e17a7af8ebb5ced200cd772c59e5b86489f;hpb=8c1fa23431ade9bec578e4a0dd6a0e1108a6b53d;p=wloh diff --git a/www/rating.pl b/www/rating.pl index f6aa8e1..f69b19a 100755 --- a/www/rating.pl +++ b/www/rating.pl @@ -11,6 +11,7 @@ use HTML::Entities; use utf8; use locale; require '../config.pm'; +require '../common.pm'; my $dbh = DBI->connect($config::local_connstr, $config::local_username, $config::local_password) or die "connect: " . $DBI::errstr; @@ -19,23 +20,21 @@ $dbh->{RaiseError} = 1; binmode STDOUT, ':utf8'; -# Find auxillary parameters. -my %params = (); -my $q = $dbh->prepare('SELECT * FROM ratings WHERE id < 0'); -$q->execute; -while (my $ref = $q->fetchrow_hashref) { - $params{$ref->{'id'}} = $ref->{'rating'}; -} -my $match_stddev = $params{-2} * sqrt(2.0); +my $aux_parms = wloh_common::get_auxillary_parameters($dbh); +my $match_stddev = $aux_parms->{'score_stddev'} * sqrt(2.0); print CGI->header(-type=>'text/html; charset=utf-8', -expires=>'+5m'); POSIX::setlocale(&POSIX::LC_ALL, 'nb_NO.UTF-8'); -printf <<"EOF", $params{-3}, $match_stddev; - +printf <<"EOF", $aux_parms->{'rating_prior_stddev'}, $match_stddev; + + + WLoH-rating - +

WLoH-rating

@@ -47,11 +46,7 @@ printf <<"EOF", $params{-3}, $match_stddev; for tilgang!), og oppdateres hver hele time. Den er fullstendig uoffisiell, og har ingen innflytelse på WLoH, men brukes for å estimere vinnersannsynligheter i - sannsynlighetsberegningen.

- -

Vær obs på at det - er betydelig usikkerhetsmargin, spesielt for spillere som ikke - har spilt spesielt mange kamper.

+ sannsynlighetsberegningen.

Modellen kan endre seg når som helst når jeg føler for det :-) Ikke ta ratingen alt for alvorlig, selv om den er basert på @@ -60,16 +55,17 @@ printf <<"EOF", $params{-3}, $match_stddev;

Modellparametre

-

For de som vet litt om slikt. Mer utførlig forklaring for begynnere kommer seinere.

+

For de som vet litt om slikt. Det finnes også en lengre, mer detaljert + forklaring beregnet på ikke-matematikere.

Divisjonsoversikt

@@ -82,8 +78,25 @@ printf <<"EOF", $params{-3}, $match_stddev; EOF -$q = $dbh->prepare('SELECT divisjon,AVG(rating) AS avg_rating,STDDEV(rating) AS stddev_rating FROM ratings NATURAL JOIN siste_divisjon GROUP BY divisjon ORDER BY divisjon'); -$q->execute; +my $cgi = CGI->new; +my $locale = wloh_common::get_locale($cgi); +my $season = wloh_common::get_max_season($dbh, $locale); + +# Pick up all the subdivisions' ratings. +my %subdivision_ratings = (); +my $q = $dbh->prepare('SELECT divisjon, avdeling, serie_id, AVG(rating) AS avg_rating FROM ratings NATURAL JOIN siste_divisjon WHERE sesong=? GROUP BY divisjon, avdeling, serie_id ORDER BY divisjon, avdeling'); +$q->execute($season); + +while (my $ref = $q->fetchrow_hashref) { + my $division = $ref->{'divisjon'}; + my $rating = $ref->{'avg_rating'}; + my $id = $ref->{'serie_id'}; + + push @{$subdivision_ratings{$division}}, [ $id, $rating ]; +} + +$q = $dbh->prepare('SELECT divisjon,AVG(rating) AS avg_rating,STDDEV(rating) AS stddev_rating FROM ratings NATURAL JOIN siste_divisjon WHERE sesong=? GROUP BY divisjon ORDER BY divisjon'); +$q->execute($season); my $i = 0; while (my $ref = $q->fetchrow_hashref) { @@ -95,6 +108,11 @@ while (my $ref = $q->fetchrow_hashref) { printf " %d.\n", $ref->{'divisjon'}; printf " %.1f\n", $ref->{'avg_rating'}; printf " %.1f\n", $ref->{'stddev_rating'}; + + for my $arr (@{$subdivision_ratings{$ref->{'divisjon'}}}) { + my ($id, $rating) = @$arr; + printf " %.1f\n", $id, $rating; + } print " \n"; } @@ -107,7 +125,8 @@ print <<"EOF"; Nick - Ranking + Rating + Std.avvik Sist sett EOF @@ -117,8 +136,10 @@ SELECT * FROM ratings NATURAL JOIN kanonisk_navn NATURAL JOIN siste_divisjon + NATURAL JOIN spiller_kultur +WHERE kultur=? ORDER BY rating DESC'); -$q->execute; +$q->execute($locale); $i = 0; while (my $ref = $q->fetchrow_hashref) { @@ -130,16 +151,17 @@ while (my $ref = $q->fetchrow_hashref) { printf " %d.\n", $i; printf " %s\n", $ref->{'id'}, HTML::Entities::encode_entities(Encode::decode_utf8($ref->{'navn'})); printf " %.1f\n", $ref->{'rating'}; + printf " %.1f\n", $ref->{'rating_stddev'}; printf " %s\n", $ref->{'serie_id'}, $ref->{'serie_navn'}; print " \n"; } +print " \n"; + +wloh_common::output_last_sync($dbh); print <<"EOF"; - EOF -$match_stddev = $params{-2} * sqrt(2.0); - $dbh->rollback;