Сравнивает то он правильно, скорее всего Вы не допонимаете работу скрипта
вот так он работает:
0. Вы отправляете форму со значением
1. Запускается скрипт и принимает значение
2. Генерирует число
3. Проверяет совпадает ли введённое значение
4. Выводит число
поставьте диапазон от 1 до 2 и проверьте ещё раз.
если нужно сначала сгенерировать, а после отправки данных проверить, то нужно рандомное значение запоминать, например через сессию.