There can be intentional randomization, and unintentional randomization.
A program that has to do a lot of anything will generally try to calculate multiple things at the same time – for example, evaluating the outcome of many possible moves. When things happen in parallel in computers, one may finish before the other (for example, because the operating system “borrowed” the CPU core doing one of the calculations for briefly doing something else).
A program could account for it, but it’s often not important, and spending time/resources on accounting for it would be a bad tradeoff.
As a result, moves may end up on the candidate list in a different order, and since the chess engine typically only has limited time, this means it’ll evaluate slightly different moves.
(This is pretty common, and many programs will output slightly different things randomly due to such variations. A program or algorithm that will always produce the same result is called *deterministic*, one that doesn’t is called *non-deterministic*. Sometimes this matters, but often it doesn’t, so non-deterministic is good enough.)
Latest Answers