sigma_result = sigma;
}
-int main(int argc, char **argv)
+void compute_new_rating(double mu1, double sigma1, double mu2, double sigma2, int score1, int score2, double &mu, double &sigma)
{
- double mu1 = atof(argv[1]);
- double sigma1 = atof(argv[2]);
- double mu2 = atof(argv[3]);
- double sigma2 = atof(argv[4]);
- int score1 = atoi(argv[5]);
- int score2 = atoi(argv[6]);
vector<pair<double, double> > curve;
if (score1 == 10) {
}
}
- double mu_est, sigma_est, mu, sigma;
+ double mu_est, sigma_est;
normalize(curve);
estimate_musigma(curve, mu_est, sigma_est);
least_squares(curve, mu_est, sigma_est, mu, sigma);
- printf("%f %f\n", mu, sigma);
}
+
+int main(int argc, char **argv)
+{
+ double mu1 = atof(argv[1]);
+ double sigma1 = atof(argv[2]);
+ double mu2 = atof(argv[3]);
+ double sigma2 = atof(argv[4]);
+
+ if (argc > 5) {
+ int score1 = atoi(argv[5]);
+ int score2 = atoi(argv[6]);
+ double mu, sigma;
+ compute_new_rating(mu1, sigma1, mu2, sigma2, score1, score2, mu, sigma);
+ printf("%f %f\n", mu, sigma);
+ } else {
+ // assess all possible scores
+ for (int i = 0; i <= 9; ++i) {
+ double newmu1, newmu2, newsigma1, newsigma2;
+ compute_new_rating(mu1, sigma1, mu2, sigma2, 10, i, newmu1, newsigma1);
+ compute_new_rating(mu2, sigma2, mu1, sigma1, i, 10, newmu2, newsigma2);
+ printf("10-%u,%f,%+f,%+f\n",
+ i, prob_score(i, mu1-mu2), newmu1-mu1, newmu2-mu2);
+ }
+ for (int i = 10; i --> 0; ) {
+ double newmu1, newmu2, newsigma1, newsigma2;
+ compute_new_rating(mu1, sigma1, mu2, sigma2, i, 10, newmu1, newsigma1);
+ compute_new_rating(mu2, sigma2, mu1, sigma1, 10, i, newmu2, newsigma2);
+ printf("%u-10,%f,%+f,%+f\n",
+ i, prob_score(i, mu2-mu1), newmu1-mu1, newmu2-mu2);
+ }
+ }
+}
+