What the code for second% does is that it produces a value at half the range maximum, then multiplies it by 2, thus generating an EVEN value. And if the first% value is also EVEN, second% adds 1 to itself, making sure that the values are mismatched ODD & EVEN.

It's biased because the values can't be of the same type - they will always be mismatched ODD & EVEN except if the first value is = range%, the second value will be the same type. (According to limited testing so far).