Predicting actions with an N-Gram predictor
Predicting actions is a great way to give players a challenge by going from random selection to selection based on past actions. One way to implement learning is by using probabilities in order to predict what the player will do next, and that's what an N-Gram predictor does.
To predict the next choice, N-Gram predictors hold a record of the probabilities of making a decision (which is usually a move), given all combinations of choices for the previous n moves.
Getting ready…
This recipe makes use of general types. It is recommended that we have at least a basic understanding of how they work because it's critical that we use them well.
The first thing to do is implement a data type for holding the actions and their probabilities; we'll call it KeyDataRecord
.
The KeyDataReconrd.cs
file should look like this:
using System.Collections; using System.Collections.Generic; public class KeyDataRecord<T> { public Dictionary<T, int> counts; ...