private int GetRandomTranspositionFromDistribution(Dictionary<int, double> transposition_distribution)
{
var rng = new Random();
var rand = rng.NextDouble();
int i = 0;
double sum = transposition_distribution.ElementAt(i).Value;
while (sum < rand)
{
i++;
sum += transposition_distribution.ElementAt(i).Value;
}
var kvp = transposition_distribution.ElementAt(i);
return kvp.Key;
}