X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=www%2Frating.pl;h=2118f40e4e3d9108709dca813987fdb09927ec00;hb=7d0f95611a87c4e85236ab3132db3d11cc2d59f1;hp=fd0648d3e71f63641c65544ecc663fb3423a6ef7;hpb=5055bcf8669f79a208c0fa05cbf55445eb096764;p=wloh diff --git a/www/rating.pl b/www/rating.pl index fd0648d..2118f40 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,56 +20,36 @@ $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 $cgi = CGI->new; +my $locale = wloh_common::get_locale($cgi); + +my $aux_parms = wloh_common::get_auxillary_parameters($dbh, $locale); +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

-

Ratingen er basert på spilledata fra WLoH (takk til Lobotommy +

Dette er et hobbyprosjekt fra tredjepart, og ikke en offisiell del av + Wordfeud Leage of Honour.

+ +

Ratingen er dog basert på spilledata fra WLoH (takk til Lobotommy 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å @@ -77,24 +58,76 @@ td.num {

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

+ + + + + + + +EOF + +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 NATURAL JOIN spiller_kultur WHERE kultur=? AND sesong=? GROUP BY divisjon, avdeling, serie_id ORDER BY divisjon, avdeling'); +$q->execute($locale, $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) { + if (++$i % 2 == 0) { + print " \n"; + } else { + print " \n"; + } + printf " \n", $ref->{'divisjon'}; + printf " \n", $ref->{'avg_rating'}; + printf " \n", $ref->{'stddev_rating'}; + + for my $arr (@{$subdivision_ratings{$ref->{'divisjon'}}}) { + my ($id, $rating) = @$arr; + printf " \n", $id, $rating; + } + print " \n"; +} + +print <<"EOF"; +
Div.SnittStd.avvik
%d.%.1f%.1f%.1f
+

Rankingliste

- + + EOF @@ -104,10 +137,12 @@ 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); -my $i = 0; +$i = 0; while (my $ref = $q->fetchrow_hashref) { if (++$i % 2 == 0) { print " \n"; @@ -117,16 +152,17 @@ while (my $ref = $q->fetchrow_hashref) { printf " \n", $i; printf " \n", $ref->{'id'}, HTML::Entities::encode_entities(Encode::decode_utf8($ref->{'navn'})); printf " \n", $ref->{'rating'}; + printf " \n", $ref->{'rating_stddev'}; printf " \n", $ref->{'serie_id'}, $ref->{'serie_navn'}; print " \n"; } +print "
NickRankingRatingStd.avvik Sist sett
%d.%s%.1f%.1f%s
\n"; + +wloh_common::output_last_sync($dbh); print <<"EOF"; - EOF -$match_stddev = $params{-2} * sqrt(2.0); - $dbh->rollback;