A lot of these other answers are missing a key point. These engines determine the “best move” by searching the game tree for a certain amount of time. However, a tiny difference in the amount of time spent (due to random fluctuations in the calculation time) can result in a different best move, especially when 2 moves are equally good. Also, many engines are multithreaded, which adds more randomness as certain threads finish before others. If you had a match with 2 single-threaded engines that searched to a set depth (meaning they search the same amount regardless of time), then the game *would* be deterministic and always have the same outcome.
Latest Answers