Giter VIP home page Giter VIP logo

glicko2-csharp's Introduction

Glicko2

C# implementation of the Glicko-2 rating algorithm. This is a C# port of goochjs/glicko2.

Usage

using Glicko2;

// Instantiate a RatingCalculator object.
// At instantiation, you can set the default rating for a player's volatility and
// the system constant for your game ("ฯ„", which constrains changes in volatility
// over time) or just accept the defaults.
var calculator = new RatingCalculator(/* initVolatility, tau */);

// Instantiate a Rating object for each player.
var player1 = new Rating(calculator/* , rating, ratingDeviation, volatility */);
var player2 = new Rating(calculator/* , rating, ratingDeviation, volatility */);
var player3 = new Rating(calculator/* , rating, ratingDeviation, volatility */);

// Instantiate a RatingPeriodResults object.
var results = new RatingPeriodResults();

// Add game results to the RatingPeriodResults object until you reach the end of your rating period.
// Use addResult(winner, loser) for games that had an outcome.
results.AddResult(player1, player2);
// Use addDraw(player1, player2) for games that resulted in a draw.
results.AddDraw(player1, player2);
// Use addParticipant(player) to add players that played no games in the rating period.
results.AddParticipant(player3);

// Once you've reached the end of your rating period, call the updateRatings method
// against the RatingCalculator; this takes the RatingPeriodResults object as argument.
//  * Note that the RatingPeriodResults object is cleared down of game results once
//    the new ratings have been calculated.
//  * Participants remain within the RatingPeriodResults object, however, and will
//    have their rating deviations recalculated at the end of future rating periods
//    even if they don't play any games. This is in-line with Glickman's algorithm.
calculator.UpdateRatings(results);

// Access the getRating, getRatingDeviation, and getVolatility methods of each
// player's Rating to see the new values.
var players = new[] {player1, player2, player3};
for (var index = 0; index < players.Length; index++)
{
	var player = players[index];
	Console.WriteLine("Player #" + index + " values: " + player.GetRating() + ", " +
		player.GetRatingDeviation() + ", " + player.GetVolatility();
}

Building on .NET Core

You can also build glicko2-csharp for .NET Core. To do this, run:

dotnet restore
dotnet build -c Release

glicko2-csharp's People

Contributors

ellisonch avatar maartenstaa avatar thomas-daniels avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.