static void Main(string[] args) { int randomSeed = (int)((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds); QLearningAI ai1 = new QLearningAI(randomSeed + 0, 0.3f, 0.9f, 0.9f); RandomMoveAI ai2 = new RandomMoveAI(randomSeed + 1); const int numTrainGames = 100000; const int numEvaluateGames = 10000; TrainGames(ai1, ai2, numTrainGames); Simulate.WinnerStats winnerStats = Simulate.RunGames(Simulate.CreateNewGameState(), (gameState) => { switch (gameState.NextPlayer) { case BoardState.Player.Player1: return(ai1.GetPlayerInput(gameState, false)); case BoardState.Player.Player2: return(ai2.GetPlayerInput(gameState)); default: throw new Exception("Invalid NextPlayer"); } }, numEvaluateGames); Display.PrintWinnerStats(winnerStats); }