float mu = drawn_ratings(pl1) - drawn_ratings(pl2);
int score = lrintf(draw_gaussian(mu, match_stddev));
- scores[pl1][pl2] = score;
- scores[pl2][pl1] = -score;
+ if (score >= 0) {
+ scores[pl1][pl2] = score;
+ scores[pl2][pl1] = 0;
+ } else {
+ scores[pl1][pl2] = 0;
+ scores[pl2][pl1] = -score;
+ }
}
}
continue;
}
float mu = drawn_ratings(pl1) - drawn_ratings(pl2);
- float z = (scores[pl1][pl2] - mu) / match_stddev;
+ float z = (scores[pl1][pl2] - scores[pl2][pl1] - mu) / match_stddev;
llh -= z * z * 0.5f;
}
}
if (has_scores[pl1][pl2]) {
continue;
}
- printf("%s %s %d\n", players[pl1].c_str(), players[pl2].c_str(), mlm_scores[pl1][pl2]);
+ printf("%s %s %d\n", players[pl1].c_str(), players[pl2].c_str(), mlm_scores[pl1][pl2] - mlm_scores[pl2][pl1]);
}
}
}