Так ничего особенного. Если вы загадываете двухзначное число от 10 до 19, то это соответствует после пункта 2 значению 9.
Вычтите из него составляющие его цифры (например, из числа 24 надо вычесть 2 и 4, получится 18)
от 20 до 29 будет после 2 пункта 18. И т.д.
Если обратите внимание, то увидите диагональ одинаковых символов 9-18-27-...
При каждом обновлении страницы скрипт ставит в эту диагональ новый случайный. Поэтому у вас складывается впечатление, что он угадывает каждый раз разные символы )))