skillratings 0.1.0

Calculate a player's skill level using elo and glicko-2 algorithms.
Documentation

skillratings

Calculate a player's skill level using Elo and Glicko-2 algorithms known from their usage in chess and other games.

Usage

For a detailed guide on how to use this crate, head over to the documentation.

Elo rating system

extern crate skillratings;

use skillratings;

let player_one = skillratings::rating::EloRating { rating: 1000.0 };
let player_two = skillratings::rating::EloRating { rating: 1000.0 };

// The outcome is from the perspective of player one.
let outcome = skillratings::outcomes::Outcomes::WIN;

let (player_one_new, player_two_new) = skillratings::elo::elo(player_one, player_two, outcome, 32.0);
assert_eq!(player_one_new.rating, 1016.0);
assert_eq!(player_two_new.rating, 984.0);

Glicko-2 rating system

extern crate skillratings;

use skillratings;

let player_one = skillratings::rating::GlickoRating { 
    rating: 1500.0, 
    deviation: 350.0, 
    volatility: 0.06 
};
let player_two = skillratings::rating::GlickoRating { 
    rating: 1500.0, 
    deviation: 350.0, 
    volatility: 0.06 
};

let outcome = skillratings::outcomes::Outcomes::WIN;

let (player_one_new, player_two_new) = skillratings::glicko2::glicko2(player_one, player_two, outcome, 0.5);

assert_eq!(player_one_new.rating.round(), 1662.0);
assert_eq!(player_one_new.deviation.round(), 290.0);

assert_eq!(player_two_new.rating.round(), 1338.0);
assert_eq!(player_two_new.deviation.round(), 290.0);

License

This project is licensed under the MIT License.