diff --git a/src/search.cpp b/src/search.cpp index e008bec1..b4a69092 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -335,7 +335,12 @@ void Thread::search() { beta = VALUE_INFINITE; multiPV = Options["MultiPV"]; - Skill skill(Options["Skill Level"]); + // Pick integer skill levels, but non-deterministically round up or down + // such that the average integer skill corresponds to the input floating point one. + PRNG rng(now()); + int intLevel = int(Options["Skill Level"]) + + ((Options["Skill Level"] - int(Options["Skill Level"])) * 1024 > rng.rand() % 1024 ? 1 : 0); + Skill skill(intLevel); // When playing with strength handicap enable MultiPV search that we will // use behind the scenes to retrieve a set of possible moves.