static GameState RunSimulation(GameState state = null, bool isDeterministic = false) { var root = state ?? GetStartState(isDeterministic); var mcts = new MCTS(); for (int iteration = 0; iteration < 100000; iteration++) { var leaf = mcts.Select(root); if (leaf.IsSampled) { mcts.Expand(leaf); } mcts.Simulate(leaf); mcts.Propagate(leaf); } return(root); }